一,会话技术
一,登录校验会话技术
跟踪方案:
1—客户端会话跟踪技术:Cookie
2—服务端会话跟踪技术: Session
3—令牌技术
会话技术——————Cookie
HTTP协议中支持该技术
会话跟踪方案的原理:
响应头:Set-Cookie
请求头:Cookie
由于移动端APP无法使用Cookie级Cookie不能跨域,使用较少
会话技术——————Session(服务端会话技术,底层基于Cookie)
用Cookie来记录JSESSIONID
优点:存储在服务端,安全
缺点:服务器集群环境下无法直接使用Sessiono及Cookie的所有缺点
二,JWT令牌
会话技术———————————–令牌方案,当前企业开发主流方案(逻辑需要在后端代码中具体实现)
JWT的生成与校验
代码生成JWT并进行解析示例
1 | public class JwtTest |
三,过滤器(Filter)
1.过滤器(Filter)实现令牌校验:
定义:定义一个类实现Filter接口(doFilter)
配置:
@WebFilter(urlPatterns=”/*”)//配置拦截路径
@ServletComponentScan //启动类上加注解,表示开启了对Servlet组件的支持
2.过滤器是实际使用的身份验证过滤器,其功能包括:
拦截所有请求
对于登录接口(包含”/login”)直接放行
对其他接口检查请求头中的token
如果没有token或者token无效,则返回401未授权状态码
如果token有效,则放行请求
过滤器链的作用
3.在Tlias的项目中,过滤器链的工作原理如下:
过滤器链执行顺序
当您启动应用时,由于TliasWebManagementApplication类上使用了@ServletComponentScan注解,所有带有@WebFilter注解的过滤器都会被自动注册。
目前只有TokenFilter启用了该注解,所以它会被加入到过滤器链中。
- 过滤器链工作机制
当一个HTTP请求到达服务器时:
请求首先进入过滤器链的第一个过滤器(在您的项目中就是TokenFilter)
在每个过滤器的doFilter方法中,可以对请求进行预处理
当调用filterChain.doFilter()方法时,请求会传递给下一个过滤器
如果这是最后一个过滤器,请求就会被传递给目标Servlet或Controller
响应按相反顺序通过过滤器链返回给客户端
具体逻辑:
如果是登录请求(/login):直接放行到Controller处理
如果是非登录请求:
检查是否有token
检查token是否有效
有效则放行到Controller处理
无效则直接返回401,不会到达Controller
评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~