5分钟搞懂:基于token的用户认证

5分钟搞懂:基于token的用户认证

用户认证

用户认证或者说用户登录是确认某人的确是某人的过程,确认身份生活中靠身份证,网络上就要靠账号和密码。用户提供账号密码,网站通过与数据库中的账号密码比对确认用户身份。

基于token的用户认证

基于token的用户认证原理很简单。让用户输入账号和密码,然后获得一个token(令牌),往往是一个加密后的字符串,该token允许用户在不使用账号和密码的情况下访问特定的资源。一旦获得token,用户就获得了在一段时间内对特定资源的访问权限。

这个过程类似酒店开房,在酒店前台认证身份、登记入住,这个步骤相当于网站的登录,接着酒店前台会给你一张房卡/钥匙,这个就相当于获得了一个token,然后拿着这个房卡/钥匙就可以打开某个房间,相当于带着token可以访问某个页面,这个房卡是有有效期的,同样token也是有有效期的。

有了token,访问特定页面,用户就不需要每次都输入账号和密码登录,就像访客不需要每次都到前台登记拿钥匙。

当然如果token泄漏了,别人也可拿着这个token冒名顶替,这个和密码泄漏的效果是一样的。同样的,房客的房卡丢了,捡到房卡的就可以进房客的房间了。

与session认证的区别

本质上来说,token与session的认证过程是相似的。区别在于,token认证过程没有依赖session/cookie机制,而session认证过程必须要有session/cookie才能用,有些移动端的app是不支持cookie的。

优点

优点有很多——例如,服务端无状态有利于做集群等,token已经是互联网项目中用户认证的主流方式。


评论