使用Token请求数据

1.什么是Token?原文

  • token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。
  • 当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
  • 简单token的组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

2.为什么要用Token?

  • Token 完全由应用管理,所以它可以避开同源策略
  • Token 可以避免 CSRF攻击
    1.验证 HTTP Referer 字段(记录了 HTTP 请求的来源地址,存在被黑客篡改的可能)
    2.在请求地址中添加 token 并验证(所有请求中加入token的字段,麻烦)
    3.在 HTTP 头中自定义属性并验证(在请求头中加入token)
    axios.defaults.headers.common[‘Token’] = tokenMessage;
  • Token 可以是无状态的,可以在多个服务间共享

3.基于token机制的身份认证(流程)

  1. 客户端使用用户名和密码请求登录。
  2. 服务端收到请求,验证用户名和密码。
  3. 验证成功后,服务端会生成一个token,然后把这个token发送给客户端。
  4. 客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。
  5. 客户端每次向服务端发送请求的时候都需要带上服务端发给的token。
  6. 服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数据。(如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。)

4. cookie 和session的区别原文

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中

5.token和coolie

1.在安全性方面,token 能防止 csrf 攻击。

2.在扩展性方面,token 可以处理多端的身份验证,不仅仅局限于浏览器,只要客户端能对 token 进行储存就行。

3.token 在跨域共享资源上表现惊艳,只要不同域的服务器之间约定好签名规则,大家都是一家人!

4.token 可以携带丰富的用户信息,只要不怕别人知道,你想传什么随你便!

5.Cookie 大小4KB,Cookie过期时间一般为1个月。

6.关于token,session,cookie的概念和区别

1.token是 服务经过计算发给客户端的,服务不保存,每次客户端来请求,经过解密等计算来验证是否是自己下发的

2.session是服务本地保存,发给客户端,客户端每次访问都带着,直接和服务的session比对

3.cookie是保存在客户端上的一些基本信息,服务不保存,每次请求时客户端带上cookie,里面有一些账户密码,浏览记录什么的

猜你喜欢

转载自blog.csdn.net/wytraining/article/details/111227962
今日推荐