简便了解token机制
在简便了解cookie/session机制这篇文章中,扼要论述了cookie和session的原理。本文将要简便论述另一个同cookie/session相反紧张的武艺术语:token。
什么是token
token的意思是“令牌”,是办事端天生的一串字符串,作为客户端举行哀求的一个标识。
当用户第一次登录后,办事器天生一个token并将此token前往给客户端,今后客户端只需带上这个token前来哀求数据即可,无需再次带上用户名和暗码。
简便token的构成;uid(用户唯一的身份标识)、time(如今时间的时间戳)、sign(署名,token的前几位以哈希算法紧缩成的一定长度的十六进制字符串。为避免token流出)。
身份认证概述
由于HTTP是一种没有形态的协议,它并不晓得是谁拜候了我们的使用。这里把用户当作是客户端,客户端使用用户名另有暗码经过了身份验证,不外下次这个客户端再发送哀求时分,还得再验证一下。
通用的处理办法就是,当用户哀求登录的时分,假如没有成绩,在办事端天生一条纪录,在这个纪录里可以分析登录的用户是谁,然后把这条纪录的id发送给客户端,客户端收到今后把这个id存储在cookie里,下次该用户再次向办事端发送哀求的时分,可以带上这个cookie,如此办事端会验证一下cookie里的信息,看能不克不及在办事端这里找到对应的纪录,假如可以,分析用户以前经过了身份验证,就把用户哀求的数据前往给客户端。
以上所形貌的历程就是使用session,谁人id值就是sessionid。我们必要在办事端存储为用户天生的session,这些session会存储在内存,磁盘,大概数据库。
基于token机制的身份认证
使用token机制的身份验证办法,在办事器端不必要存储用户的登录纪录。约莫的流程:
- 客户端使用用户名和暗码哀求登录。
- 办事端收到哀求,验证用户名和暗码。
- 验证告捷后,办事端会天生一个token,然后把这个token发送给客户端。
- 客户端收到token后把它存储起来,可以放在cookie大概Local Storage(当地存储)里。
- 客户端每次向办事端发送哀求的时分都必要带上办事端发给的token。
- 办事端收到哀求,然后去验证客户端哀求内里带着token,假如验证告捷,就向客户端前往哀求的数据。
使用token机制举行登录认证,可以有以下办法:
a.用装备mac地点作为token
客户端:客户端在登录时获取装备的mac地点,将其作为参数转达到办事端
办事端:办事端吸收到该参数后,便用一个变量来吸收,同时将其作为token保存在数据库,并将该token设置到session中。客户端每次哀求的时分都要一致拦阻,将客户端转达的token和办事器端session中的token举行比力,相反则登录告捷,不同则回绝。
此办法客户端和办事端一致了唯一的标识,并且确保每一个装备拥有唯一的标识。缺陷是办事器端必要保存mac地点;优点是客户端无需重新登录,只需登录一次今后不休可以使用,关于超时的成绩由办事端举行处理。
b.用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是很容易流出的,假如不举行加密处理,很容易被恶意拷贝并用来登录。加密的办法寻常有:
- 在存储的时分把token举行对称加密存储,用到的时分再解密。
- 文章最开头提到的署名sign:将哀求URL、时间戳、token三者兼并,经过算法举行加密处理。
最好是两种办法团结使用。
另有一点,在网络层面上token使用明文传输的话好坏常伤害的,以是一定要使用HTTPS协议。
总结
以上就是关于token在用户身份认证历程中的简便总结。渴望没有武艺背景的产物司理们在和开发哥哥相反的时分不要再被这些武艺术语问住了。
作者:流年,互联网产物计划师,4年互联网产物计划履历。
本文由 @流年 原创公布于各位都是产物司理。未经允许,克制转载。
题图由作者提供

















