gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
阅读:2002回复:2

请问header中的AccessToken属性和Authorization属性服务器应该如何处理

楼主#
更多 发布于:2022-09-20 09:49
用到几个都可以.不叫AccessToken和Authorization也可以.
我给你简单讲下这两个东西是为了做什么吧:
首先这一般用在RESTFUL风格的无状态通讯中.啥意思呢?就是说不用Session这种传统的标记,来表达"用户是谁".用户每一次的请求访问都没有这个session状态的时候.就叫做无状态.
那么没有session之后,服务器怎么知道访问者到底是谁,是哪个账号呢?
那么就需要约定出来一个临时通行证token.
用户在登录页,用账号密码进行登录.然后服务器临时生成一个token或者AccessToken或者Authorization再或者lalalademaxiya,随便你叫什么名字,你只需要知道这个东西就是一个临时的身份证明就可以了.
然后用户后续的请求访问,就带上这个临时证明,(不能每次访问都传账号密码,太不安全了,所以采用临时身份证).
服务器收到请求后,从请求头里面拿出token,或者你这个AccessToken,都可以,看你叫什么名字.再从自己的内存队列中查询,是否包含这个token,以及这个token对应哪个User.在决定这个用户能做什么,后续业务怎么进行.
(一般这种情况我们放在拦截器里面做,拦截器拦截所有http请求,然后取出里面的token,username等鉴权信息,去缓存查看,是不是自己的用户,是就放行,不是就打回去)
不知道我说清楚没有.
总之这个东西就是拿来做临时身份证明的.用户登录成功,你随机生成一个不重复的字符串乱码token,然后将token:user作为键值对存入在线缓存.
然后前端发请求时,在Header里面加上token,后端收到,去在线缓存里找,是否有token对应的user.没有就不处理.你也可以给token设置有效期30分钟什么的,然后线程去循环,定期删除过期的token,然后用户就需要重新登录获取新的token.
至于"两个都要用到么?",这个问题,看你怎么想了,你觉得光一个token不太安全,那么你就再加一个.
username在Header里面.收到请求后,不光检查是否有对应的token,还要看token对应的user里面的username和你Header发过来的username是否吻合.
主要是光一个token也不太安全,一般我们请求都是账号密码这种,双字段验证:  token也可以搭配一个别的东西来验证.就像我说的,你搭配一个username.或者你觉得两个不够,你再多加几个字段.或者你觉得一个token就够了,不加也行.如果你觉得一个字段做安全认证的风险你也能接受,那就用一个.都没有硬性规定.全是码农们自我设计,自我感觉用几个比较合适.
但是我一般习惯使用username+token的形式来验证.
不知道能不能帮到你,还有疑问可以继续追问.
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
沙发#
发布于:2022-09-20 09:49
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
板凳#
发布于:2022-09-20 10:01
前端的header中都是token 而且几乎所有的登录逻辑header都是存token而不是直接存用户信息 那样不安全;
有的系统之所以username也放在Header里面.是传给后端检查是否有对应的token,还要检查token对应的user里面的username和你Header发过来的username是否吻合.也是为了安全。
游客


返回顶部