token是什么意思? token是用来干嘛的?

   

前言        

        相信多小伙伴在学习项目时都见过token这个词,但是他到底是什么意思,又有什么作用呢?下面就给大家来详细介绍一下token是什么意思  token是用来干嘛的,希望能帮助到大家。

 一、token是什么?

  token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。例如在USB1.1协议中定义了4类数据包:token包、data包、handshake包和special包。主机和USB设备之间连续数据的交换可以分为三个阶段,第一个阶段由主机发送token包,不同的token包内容不一样(暗号不一样)可以告诉设备做不同的工作,第二个阶段发送data包,第三个阶段由设备返回一个handshake包。

 二、token是用来干嘛的

  使用token机制的身份验证方法,在服务器端不需要存储用户的登录记录。大概的流程:

  1.   客户端使用用户名和密码请求登录。
  2.   服务端收到请求,验证用户名和密码。
  3.   验证成功后,服务端会生成一个token,然后把这个token发送给客户端。
  4.   客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。
  5.   客户端每次向服务端发送请求的时候都需要带上服务端发给的token。
  6.   服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数据。

  作用一:利用token机制进行登录认证,可以有以下方式:

  •  1.用设备mac地址作为token

  客户端:客户端在登录时获取设备的mac地址,将其作为参数传递到服务端

  服务端:服务端接收到该参数后,便用一个变量来接收,同时将其作为token保存在数据库,并将该token设置到session中。客户端每次请求的时候都要统一拦截,将客户端传递的token和服务器端session中的token进行对比,相同则登录成功,不同则拒绝。

  此方式客户端和服务端统一了唯一的标识,并且保证每一个设备拥有唯一的标识。缺点是服务器端需要保存mac地址;优点是客户端无需重新登录,只要登录一次以后一直可以使用,对于超时的问题由服务端进行处理。

  •  2.用sessionid作为token

  客户端:客户端携带用户名和密码登录

  服务端:接收到用户名和密码后进行校验,正确就将本地获取的sessionid作为token返回给客户端,客户端以后只需带上请求的数据即可。

  此方式的优点是方便,不用存储数据,缺点就是当session过期时,客户端必须重新登录才能请求数据。

  当然,对于一些保密性较高的应用,可以采取以上两种方式结合的方式,将设备mac地址与用户名密码同时作为token进行认证。

  作用二:APP利用token机制进行身份认证

  用户在登录APP时,APP端会发送加密的用户名和密码到服务器,服务器验证用户名和密码,如果验证成功,就会生成相应位数的字符产作为token存储到服务器中,并且将该token返回给APP端。

  以后APP再次请求时,凡是需要验证的地方都要带上该token,然后服务器端验证token,成功返回所需要的结果,失败返回错误信息,让用户重新登录。其中,服务器上会给token设置一个有效期,每次APP请求的时候都验证token和有效期。

  • token的存储

  token可以存到数据库中,但是有可能查询token的时间会过长导致token丢失(其实token丢失了再重新认证一个就好,但是别丢太频繁,别让用户没事儿就去认证)。

  为了避免查询时间过长,可以将token放到内存中。这样查询速度绝对就不是问题了,也不用太担心占据内存,就算token是一个32位的字符串,应用的用户量在百万级或者千万级,也是占不了多少内存的。

  • token的加密

  token是很容易泄露的,如果不进行加密处理,很容易被恶意拷贝并用来登录。加密的方式一般有:

  1. 在存储的时候把token进行对称加密存储,用到的时候再解密。
  2. 文章最开始提到的签名sign:将请求URL、时间戳、token三者合并,通过算法进行加密处理。

  最好是两种方式结合使用。

  最后还有一点,在网络层面上token使用明文传输的话是非常危险的,所以一定要使用HTTPS协议。

        以上就是关于token是什么意思  token是用来干嘛的的全部内容,希望通过上面的内容介绍大家能明白这一块的相关知识。

     #文章转载于万商云集 原文链接:token是什么意思 token是用来干嘛的 - 选型指导 - 万商云集#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值