在实际项目中,我们往往会发放一个token
凭证给前端,前端在每次请求的时候通过请求参数或者请求头将token
传给后端进行验证。后端在获得token
,验证通过之后会将token
转成实际需要的参数,比如userId
。
在SrpingBoot
项目中,由于在请求参数中并没有userId
这个参数,所以我们无法通过方法形参获取到userId
,因此我们需要通过HttpServletWrapper
来将token
转换成userId
参数。
1、继承HttpServletWrapper类,并重写getParameterValues方法
注:此处并没有使用真正的
token
,而是用一个map
模拟token
存储,token
为123
和456
为有效token
,分别对应着userId = 1
和userId = 2
1 | 复制代码/** |
2、定义过滤器,判断是否有token
参数或者token
参数是否有效
AbstractFilter
是自定义过滤器抽象类,主要用于添加排除路径功能,其他用法与过滤器一致
1 | 复制代码public class TokenFilter extends AbstractFilter{ |
3、配置过滤器
1 | 复制代码@Configuration |
4、在Controller
方法中使用userId
作为形参
5、请求访问该接口
- 当没有
token
参数时或者token
参数无效时,返回未授权信息
- 当
token
参数有效时,获取到相应的userId
本文转载自: 掘金