-登录认证
-会话技术
会话:用户打开浏览器,访问web服务器的资源,会话建立,知道有一方断开连接,会话结束。再一次会话中可以包含多次请求和响应。
会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。
会话跟踪技术:
-
客户端会话跟踪技术:Cookie
-
服务器会话跟踪技术:Session
-
令牌技术
Cookie:
优点:HTTP协议中支持的技术
缺点:
-
移动端APP无法使用Cookie
-
不安全,用户可以自己禁用Cookie
-
Cookie不能跨域
Session:
优点:存储在服务器,安全
缺点:
-
服务器集群环境下无法直接使用Session
-
Cookie的缺点
令牌技术:
优点:
-
支持PC端、移动端
-
解决集群环境下的认证问题
-
减轻服务器端存储压力
优点:需要自己实现
-登录校验
-JWT令牌 ——JSON Web Token
JWT:定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。
组成:
第一部分:Header(头),记录令牌类型,签名算法等。例如:{"alg":"HS256","type":"JWT"}
第二部分:Payload(有效载荷),携带一些自定义的信息、默认信息等、例如:{"id":"1","username":"Tom"}
第三部分:Signature(签名),防止Token被篡改、确保安全性。将header、payload,并加入指定密钥,通过指定签名算法计算而来。
-JWT的使用:
JWT依赖引入
JWT令牌的生成
JWT令牌的校验
注意事项:
-
JWT校验时使用的签名密钥,必须和生成JWT令牌时使用的秘钥是配套的
-
如果JWT令牌解析校验时报错,则说明JWT令牌被篡改或失效了,令牌非法
-过滤器(Filter)
概述:
-
概念:Filter过滤器,是Javaweb 三大组件(Servlet、Filter、Listener)之一
-
过滤器可以把对资源的请求给拦截下来,从而实现一些特殊的功能
-
过滤器一般完成一些通用的操作,比如:登陆脚亚目。统一编码处理、敏感字符串处理等。
Filter拦截路径
Filter可以根据需求,配置不同的拦截资源路径:
拦截路径 | urlPatterns值 | 含义 |
---|---|---|
拦截具体路径 | /login | 只有访问/login 路径时才会被拦截 |
拦截目录 | /emps/* | 访问/emps下的所有资源,都会被拦截 |
拦截所有 | /* | 访问所有资源,都会被拦截 |
过滤器链:
介绍:一个web应用中,可以配置多个过滤器,这多个过滤器就形成了一个过滤器链
顺序:注解配置的Filter ,优先级是按照过滤器类名(字符串)的自然排序
过滤器链执行顺序:
登录校验-Filter
-拦截器Interceptor
概述:
概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制器方法的执行。
作用:拦截请求,在指定的方法的调用前后,根据业务需要执行预先设定的代码
拦截器-拦截路径
拦截器可以根据需求,配置不同的拦截路径
拦截路径 | 含义 | 举例 |
---|---|---|
/* | 一级路径 | 能匹配/depts,/emps,/login,不能匹配/depts/1 |
/** | 任意级路径 | 能匹配/depts,/depts/1,/depts/1/2 |
/depts/* | /depts下的一级路径 | 能匹配/depts/1,不能匹配/depts/1/2,/depts |
/depts/** | /depts下的任意级记录 | 能匹配/depts,/depts/1/2,不能匹配/emps/1 |
拦截器执行流程:
Filter 与 Interceptor 的不同:
接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口。
拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只会拦截Spring环境中的资源。
登录校验Interceprot:
步骤:
-
获取请求URL。
-
判断请求URL中是否包含login,如果包含,说明时登陆操作,放行。
-
获取请求头中的令牌(token)。
-
判断令牌是否存在,如果不存在,返回错误结果(未登录)。
-
解析token,如果解析失败,返回错误结果(未登录)。
-
放行。