zoukankan      html  css  js  c++  java
  • 小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


    放行后会提示下单成功







     

  • 相关阅读:
    go mod 安装依赖 unkown revision问题解决
    K8S学习笔记
    TCP time_wait close_wait问题(可能是全网最清楚的例子)
    认识beanstalkd
    【线上问题系列】DB字段类型变更导致核心服务不可用
    mysql 类型自动化转换问题
    curl 用法
    requests访问https站点证书告警问题
    博客目录
    工作随笔——elasticsearch数据冷热分离、数据冷备
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11488559.html
Copyright © 2011-2022 走看看