一、token登录过程
1.、 首次登录,输入账号密码后点击登录,在服务器端对账号密码进行验证,如果无误,创建一个token. ,服务器端将token值发送给客户端,在客户端进行自由储存 ,下次登录,客户端向服务端传递token,在服务器进行验证token,如果有效则登录成功。
如图:
(1)首先输入账号密码
(2)账号密码验证无误后,服务器会随机生成一个token值(令牌)

(3) 将服务器返回的token值 在我们本地进行存储

(4) 下次登陆时就携带这个token(我们把token值放在http请求头)


(5)最后在退出登陆时,将token在本地化存储中删除
window.sessionStorage.clear();
二、token出现的背景
cookie:可以实现七天内免登录的登录方式,因此我们需要保存用户的登录信息, 直接将用户的用户名密码等关键信息存储在本地无疑是一种不安全的数据存储行为, 任何人都可以直接看到登陆详细信息,可能会遭遇到CSRF网络攻击,对账户安全无遗是一种致命的影响,因此token诞生了(对登录数据进行加密)
三、token登录和传统session认证方式的优点如下
1、支持跨域访问:cookie是无法跨域的,而token由于没有用到cookie(前提是将token放到请求头中),所以跨域后不会存在信息丢失问题。
2、无需考虑CSRF:由于不再依赖cookie,所以采用token认证方式不会发生CSRF,所以也就无需考虑CSRF的防御
3、更适用于移动端:当客户端是非浏览器平台时,cookie是不被支持的,此时采用token认证方式会简单很多
4、减轻服务器的压力:token机制在服务端不需要存储session信息,因为token自身包含了所有登录用户的信息,所以可以减轻服务端压力。
四、JWT(JSON Web Token)
JWT就是上述流程当中token的一种具体实现方式,本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行Base64编码后得到一个JWT token。
流程 : 首先用户输入账号密码后,在服务器进行验证,如果无误的话,在服务器生成通过base64编码生成一个JWT Token(字符串),服务器把这个字符串传给客户端进行本地化存储,退出时删除这个字符串就可以, 前端在每次请求时将JWT Token放入HTTP请求头中的Authorization属性中。
1876

被折叠的 条评论
为什么被折叠?



