900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 小D课堂-SpringBoot 2.x微信支付教育网站项目实战_5-10.Springboot2.x用户登录拦

小D课堂-SpringBoot 2.x微信支付教育网站项目实战_5-10.Springboot2.x用户登录拦

时间:2024-04-30 16:05:20

相关推荐

小D课堂-SpringBoot 2.x微信支付教育网站项目实战_5-10.Springboot2.x用户登录拦

笔记

10、Springboot2.x用户登录拦截器开发实战

简介:实战开发用户登录拦截器拦截器 LoginInterceptor

1、实现接口 LoginInterceptor implements HandlerInterceptor

2、重写preHandler

String accessToken = request.getHeader("token");

if(accessToken == null){

accessToken = request.getParameter("token");

}

if (accessToken != null ) {

Claims claims = JWTUtils.checkJWT(accessToken);

Integer id = (Integer)claims.get("id");

String name = (String)claims.get("name");

request.setAttribute("user_id",id);

request.setAttribute("name",name);

//普通用户

return true;

}

return false;

3、配置拦截器

@Configuration

InterceptorConfig implements WebMvcConfigurer

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/user/api/v1/*/**");

WebMvcConfigurer.super.addInterceptors(registry);

}

4、响应前端数据

public static void sendJsonMessage(HttpServletResponse response, Object obj) throws Exception {

Gson g = new Gson();

response.setContentType("application/json; charset=utf-8");

PrintWriter writer = response.getWriter();

writer.print(g.toJson(obj));

writer.close();

response.flushBuffer();

}

开始

新建一个login的拦截器

实现接口,并重写方法

重写方法

接口内有一些默认的方法。jdk8的新特性

进入Controller之前进行拦截

首先我们需要拿到token。如果Header里面获取不到。那么就从parameter里面获取。

解密token获取里面的值

在最上面定义一个Gson的变量

封装一相应数据的方法

这里再判断一下Claims不等于null

这里的异常必须修改为在方法上面抛出

这里是userId不是id刚才这里写错了。

配置连接器

新建拦截器的配置文件

增加@Configuration表示这是一个配置文件,实现接口WebMvcConfigurer

重写接口内的方法

把注册器放进去。这样就把拦截去注册好了。

新建OrderController

主要是用来模拟 是否判断登陆了。

测试

启动服务

访问video可以访问到。

访问user下的路径,会被拦截器拦截。

在拦截器内断点调试

随便传一个token的值过去

token虽然有值,但是解密会失败

域名调试

拿到扫码的url地址

跳转成功,把这个token拿到,复制下来

把token复制下来

把token复制下来。然后去访问

进入到拦截器的断点里面。解密成功获取到Claims

放行后会提示下单成功

小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-10.Springboot2.x用户登录拦截器开发实战...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。