登录功能实现(会话,令牌,Filter,Interceptor)

1. 基础登录功能

 问题

在未登录情况下,我们也可以直接访问部门管理、员工管理等功能。

2. 登录校验

 

 2.1 会话技术

会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。

会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据

会话跟踪方案:

客户端会话跟踪技术:Cookie

服务端会话跟踪技术:Session

令牌技术

2.1.1 Cookie

优点:HTTP协议中支持的技术

缺点

移动端APP无法使用Cookie

不安全,用户可以自己禁用Cookie

Cookie不能跨域 

2.1.2 Session

优点:存储在服务端,安全

缺点

服务器集群环境下无法直接使用Session

Cookie的缺点

令牌技术

优点

支持PC端、移动端

解决集群环境下的认证问题

减轻服务器端存储压力

缺点:需要自己实现 

2.2 JWT令牌

2.2.1 JWT

简介

全称:JSON Web Token 

定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。

组成:

第一部分:Header(头),记录令牌类型,签名算法等。例如{"alg":'HS256","type":"JWT"}

第二部分:PayLoad(有效载荷),携带一些自定义信息、默认信息等。例如{"id":"1":"username":"Tom"}

第三部分:Signature(签名),防止Token被篡改、确保安全性。将header\payload,并加入指定密钥,通过指定签名算法而来。

 Base64:是一种基于64个可打印的字符(A - Z a - z 0 - 9 + /) 来表示二进制数据的编码方式。

场景

1. 登录成功后,生成令牌

2. 后续每个请求,都要携带JWT令牌,系统在每次请求处理之前,先校验令牌,通过后,再处理

注意事项

JWT校验时使用的签名密钥,必须和生成JWT令牌时使用的密钥是配套的。

如果JWT令牌解析校验时报错,则说明JWT令牌被篡改了或 失效了,令牌非法。 

2.3 过滤器Filter

2.3.1 概念

Filter 过滤器,是javaWeb三大组件(Servlet、Filter、Listener)之一。

过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。

2.3.2 Filter快速入门

1. 定义Filter: 定义一个类,实现Filter接口,并重写其所有的方法。

2. 配置Filter: Filter类上加 @WebFilter 注解,配置拦截资源的路径。引导类上加 @ServletComponentScan 开启Servlet组件支持。

2.3.3 详解

执行流程

疑问

放行后访问对应资源,资源访问完成后,还会回到Filter中吗? 

如果回到Filter中,是重新执行还是执行放行后的逻辑呢? 执行放行后的逻辑

拦截路径

Filter 可以根据需求,配置不同的拦截资源路径:

拦截路径urlPatterns值含义
拦截具体路径/login只有访问/login路径时,才会被拦截
目录拦截/emps/*访问/emps下的所有资源,都会被拦截
拦截所有/*访问所有资源,都会被拦截
过滤器链 

1. 执行流程

请求 -> 放行前逻辑 ->放行 ->资源 ->放行后逻辑

2. 拦截路径

/login

/depts/*

/*

3. 过滤器链

一个web应用中,配置了多个过滤器,就形成了一个过滤器链

2.4 拦截器Interceptor

2.4.1 概述

概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring 框架中提供的,用来动态拦截控制器方法的执行。

作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设计的代码。

2.4.2 快速入门

1. 定义拦截器,实现HandlerInterceptor接口,并重写其所有方法。

2. 注册拦截器

 

2.4.3 详解

拦截路径

拦截器可以根据需求,配置不同的拦截路径:

拦截路径含义举例
/*一级路径能匹配/depts,/emps,/login,不能匹配/depts/1
/**任意级路径能匹配/depts,/depts/1,/depts/1/2
/depts/*/depts的下一级路径能匹配/depts/1,不能匹配/depts/1/2,/depts
/depts/**/depts下的任意级路径能匹配/depts,/depts/1,/depts/1/2,不能匹配/emps/1
拦截流程

Filter 与 Interceptor

接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口。

拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只会拦截Spring 环境中的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值