- 认证:让服务器认识客户端
- 之前使用session记录登录用户的信息,之后每次请求都验证session对象中是否有登录用户的信息(Filter)
- token认证:用户登录成功,服务端会给这个客户端(浏览器)签发一个token(字符串),客户端接收到这个token,存入到容器中(sessionStorage或者是LocalStorage),浏览器每次访问该服务器,都要带着签发的token,服务器来验证token是否是该服务器签发
- token失效了,应该怎么办:
- 原令牌验证,(只是取消了是否过期的验证),验证成功,重新生成一个令牌token,之后浏览器每次携带新的令牌;
- 签发一个刷新令牌(token)
- 用户在客户端输入用户名和密码进行登录,客户端将用户名和密码发送到服务器进行验证。
- 服务器验证用户名和密码是否正确,如果正确,服务器会生成一个Token,并给客户端返回这个Token。
- 客户端接收到Token后,会将Token存储起来,通常会存储在Cookie、Local Storage或者Session中。
- 在后续的请求中,客户端每次都会携带这个Token,将其作为请求的一部分发送给服务器。
- 服务器接收到请求后,会验证Token的有效性。如果Token有效,服务器会处理请求并返回相应的数据;如果Token无效或者过期,服务器会拒绝请求并返回相应的错误信息。
- 前端登录时输入用户名和密码,传到后台,根据用户名验证密码是否正确,如果正确调用工具类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失效就需要重新登录了;
- 认证成功,签发token,保存用户的userDetail定义的方法使用token和userDetail关联
- 将token回应,前端记录,每次访问携带;
- 在后端spring security中定义过滤器,过滤请求验证token,通过token获取userDetail,将userDetail交给Springsecurity认证管理器;
posted @
2024-01-10 15:41
卡皮巴拉
阅读(
8)
评论()
编辑
收藏
举报