(token,Spring Security)

  • 认证:让服务器认识客户端
  • 之前使用session记录登录用户的信息,之后每次请求都验证session对象中是否有登录用户的信息(Filter)
  • token认证:用户登录成功,服务端会给这个客户端(浏览器)签发一个token(字符串),客户端接收到这个token,存入到容器中(sessionStorage或者是LocalStorage),浏览器每次访问该服务器,都要带着签发的token,服务器来验证token是否是该服务器签发
  • token失效了,应该怎么办:
  1. 原令牌验证,(只是取消了是否过期的验证),验证成功,重新生成一个令牌token,之后浏览器每次携带新的令牌;
  2. 签发一个刷新令牌(token)
  • token的认证过程
  1. 用户在客户端输入用户名和密码进行登录,客户端将用户名和密码发送到服务器进行验证。
  2. 服务器验证用户名和密码是否正确,如果正确,服务器会生成一个Token,并给客户端返回这个Token。
  3. 客户端接收到Token后,会将Token存储起来,通常会存储在Cookie、Local Storage或者Session中。
  4. 在后续的请求中,客户端每次都会携带这个Token,将其作为请求的一部分发送给服务器。
  5. 服务器接收到请求后,会验证Token的有效性。如果Token有效,服务器会处理请求并返回相应的数据;如果Token无效或者过期,服务器会拒绝请求并返回相应的错误信息。

  • Token的认证
  1. 前端登录时输入用户名和密码,传到后台,根据用户名验证密码是否正确,如果正确调用工具类JWT(根据头部,数据和签名,包括当前时间和设置的token过期时间来生成token)的方法生成token和刷新token,把token当作key,认证对象(用户名,用户id,用户权限)当作value存储到redis里面,redis作为第三方可以共享token,在后端生成token和刷新token后会发送给浏览器,浏览器每次访问服务端都会携带着token,后端会根据浏览器带来的token在redis中找到对应的认证对象,看相应的操作有没有权限。在后端的过滤器或拦截器会验证token是否过期(根据token生成的当前时间和有效时间段来判断),token过期会返回给浏览器错误码,然后浏览器向后端发送刷新token,后端识别到刷新token会生成一个新的token,刷新token和当前认证对象绑定,替换掉原来的token关联,在把这个token和刷新token发送给浏览器,如果刷新token失效就需要重新登录了;
  • Spring Security
  1. 认证成功,签发token,保存用户的userDetail定义的方法使用token和userDetail关联
  2. 将token回应,前端记录,每次访问携带;
  3. 在后端spring security中定义过滤器,过滤请求验证token,通过token获取userDetail,将userDetail交给Springsecurity认证管理器;
posted @ 2024-01-10 15:41  卡皮巴拉  阅读(8)  评论(0编辑  收藏  举报