简单理解token机制 token是什么意思


简单理解token机制 token是什么意思

文章插图
token是什么意思(简单理解一下token机制)
在《简单理解cookie/session机制》一文中,简要阐述了cookie和session的原理 。本文将简要解释另一个与cookie/session同样重要的技术术语:token 。

什么是token?Token的意思是“令牌”,是服务器生成的一串字符串,作为信息资源网向客户端请求的标识符 。
当用户第一次登录时,服务器生成一个令牌并将其返回给客户端 。以后客户端只需要带这个令牌来请求数据,不用再带用户名和密码了 。
简单令牌的组成;Uid(用户的唯一身份)、time(当前时间的时间戳)、sig信息资源网n(签名,token的前几个数字通过哈希算法压缩成一定长度的十六进制字符串 。以防止令牌泄漏) 。
身份认证概述因为HTTP是无状态协议,它不知道谁访问了我们的应用程序 。这里把用户当作客户端,客户端用用户名和密码认证通过了,但是下一次这个客户端发送请求的时候,还得再验证一次 。
一般的解决方案是,当用户请求登录时,如果没有问题,服务器上会生成一条记录,记录中可以描述登录的用户,然后将这条记录的id发送给客户端,客户端收到后会将这个id存储在cookie中,下次用户再次向服务器发送请求时,可以随身携带这个cookie,这样服务器就会对cookie中的信息进行验证 。看看能不能在服务器上找到对应的记录 。如果是,说明用户通过了认证,然后将用户请求的数据返回给客户端 。
上面描述的过程是使用session,那个id值是sessionid 。我们需要在服务器中存储为用户生成的会话 。这些会话将存储在内存、磁盘或数据库中 。
基于令牌机制的身份认证使用令牌机制的认证方法不需要在服务器端存储用户的登录记录 。大致过程:
使用客户端用户名和密码请求登录 。
服务器接收请求并验证用户名和密码 。
验证成功后,服务器将生成一个令牌,然后将其发送给客户端 。
收到令牌后,客户端存储它,它可以放在cookie或本地存储中 。
客户端每次向服务器发送请求时,都需要携带服务器发送的令牌 。
服务器接收请求,然后验证客户端请求是否携带令牌 。如果验证成功,它会将请求的数据返回给客户端 。
使用令牌机制进行登录身份验证的方式有以下几种:
A.使用设备的mac地址作为令牌
客户端:客户端在登录时获取设备的mac地址,并将其作为参数传递给服务器 。
服务器:收到这个参数后,服务器用一个变量接收,在数据库中保存为令牌,并将令牌设置到会话中 。每次客户端请求,都要统一拦截,将客户端传递的令牌与服务器会话中的令牌进行比较 。如果令牌相同,则登录成功,如果不同,则被拒绝 。
这样,客户端和服务器统一了唯一标识,保证了每台设备都有唯一标识 。缺点是服务器需要保存mac地址;好处是客户端不需要再次登录,登录一次就可以一直使用,超时的问题由服务器处理 。
B.使用sessionid作为令牌
客户端:客户端使用用户名和密码登录 。
服务器:收到用户名和密码后,检查一下 。如果正确,本地获取的sessionid将作为令牌返回给客户端 。客户端只需要在将来带来所请求的数据 。
这种方法的优点是方便,不需要存储数据 。缺点是当会话过期时,客户端必须再次登录以请求数据 。
当然,对于一些保密性较高的应用,可以结合两种方式,将设备的mac地址和用户名密码作为令牌进行认证 。
使用令牌机制进行身份认证当用户登录APP时,APP会将加密后的用户名和密码发送给服务器,服务器会对用户名和密码进行验证 。如果验证成功,它将生成相应数量的字符作为令牌存储在服务器中,并将令牌返回给APP 。
当应用程序将来再次请求时,令牌应该被带到需要验证的任何地方 。然后,服务器验证令牌,成功返回所需结果,如果失败,则返回错误消息,以便用户可以重新登录 。其中,服务器会为令牌设置一个截止日期,并在每次APP请求时验证令牌和截止日期 。
【简单理解token机制 token是什么意思】
令牌存储Token可以存储在数据库中,但是查询token的时间可能太长,可能会导致token丢失(其实如果token丢失了,重新认证一个也是好的,但是不要太频繁的丢失,也不要让用户没事就认证) 。
为了避免过长的查询时间,可以将token放入内存中 。这样查询速度肯定不是问题,也不用太担心占用内存 。即使令牌是32位的字符串,应用的用户数是一百万或者一千万,也不占多少内存 。


推荐阅读