在简略了解cookie/session机制这篇文章中,扼要论述了cookie和session的原理。本文即将简略论述另一个同cookie/session相同重要的技能术语:token。
什么是token
当用户第一次登录后,服务器生成一个token并将此token回来给客户端,今后客户端只需带上这个token前来恳求数据即可,无需再次带上用户名和暗码。
身份认证概述
通用的解决办法便是,当用户恳求登录的时分,假如没有问题,在服务端生成一条记载,在这个记载里能够阐明登录的用户是谁,然后把这条记载的id发送给客户端,客户端收到今后把这个id存储在cookie里,下次该用户再次向服务端发送恳求的时分,能够带上这个cookie,这样服务端会验证一下cookie里的信息,看能不能在服务端这儿找到对应的记载,假如能够,阐明用户现已经过了身份验证,就把用户恳求的数据回来给客户端。
根据token机制的身份认证
客户端运用用户名和暗码恳求登录。服务端收到恳求,验证用户名和暗码。验证成功后,服务端会生成一个token,然后把这个token发送给客户端。客户端收到token后把它存储起来,能够放在cookie或许Local Storage(本地存储)里。客户端每次向服务端发送恳求的时分都需求带上服务端发给的token。服务端收到恳求,然后去验证客户端恳求里边带着token,假如验证成功,就向客户端回来恳求的数据。
a.用设备mac地址作为token
服务端:服务端接纳到该参数后,便用一个变量来接纳,一起将其作为token保存在数据库,并将该token设置到session中。客户端每次恳求的时分都要一致阻拦,将客户端传递的token和服务器端session中的token进行比照,相同则登录成功,不同则回绝。
b.用sessionid作为token
服务端:接纳到用户名和暗码后进行校验,正确就将本地获取的sessionid作为token回来给客户端,客户端今后只需带上恳求的数据即可。
当然,关于一些保密性较高的运用,能够采纳两种方法结合的方法,将设备mac地址与用户名暗码一起作为token进行认证。
用户在登录APP时,APP端会发送加密的用户名和暗码到服务器,服务器验证用户名和暗码,假如验证成功,就会生成相应位数的字符产作为token存储到服务器中,而且将该token回来给APP端。
token的存储
为了防止查询时刻过长,能够将token放到内存中。这样查询速度肯定就不是问题了,也不必太忧虑占有内存,就算token是一个32位的字符串,运用的用户量在百万级或许千万级,也是占不了多少内存的。
token是很简略走漏的,假如不进行加密处理,很简略被歹意复制并用来登录。加密的方法一般有:
最好是两种方法结合运用。
总结
<p font-size:16px;color:#4f4f4f;background-color:#ffffff;"="" style="overflow-wrap: break-word; margin: 5px 0px; color: rgb(0, 0, 0); font-family: "sans serif", tahoma, verdana, helvetica;">以上便是关于token在用户身份认证进程中的简略总结。期望没有技能布景的产品司理们在和开发哥哥交流的时分不要再被这些技能术语问住了。