美文网首页
springboot -- jwt

springboot -- jwt

作者: Jycoding | 来源:发表于2022-10-05 15:19 被阅读0次
    LoginInterceptor

    LoginInterceptor

    /**

    * 登陆拦截

    */

    @Component

    @Slf4j

    public class LoginInterceptor implements HandlerInterceptor {

        @Override

        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

            if (request.getMethod().equals("OPTIONS")) {

                log.info("11111");

                response.setStatus(HttpServletResponse.SC_OK);

                return true;

            }

            System.out.println("进入登陆拦截器...");

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

            System.out.println("***检查令牌"+token);

            Claims claims= Jwts.parser().setSigningKey("Mr_xiao").parseClaimsJws(token).getBody();

            System.out.println(claims);

            // 出错了会报异常

            return true;

        }

        @Override

        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

        }

        @Override

        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

        }

    }

    /**

    * 支持跨域

    */

    @Configuration

    public class WebConfig implements WebMvcConfigurer {

        @Autowired

        LoginInterceptor login_lj;

        @Override

        public void addCorsMappings(CorsRegistry registry) {

            registry.addMapping("/**")

                    .allowedOriginPatterns("*")

                    .allowedMethods("*")

                    .allowCredentials(true)

                    .maxAge(3600)

                    .allowedHeaders("*");

        }

        @Override

        public void addInterceptors(InterceptorRegistry registry) {

            registry.addInterceptor(login_lj)

                    .addPathPatterns("/**")

                    .excludePathPatterns("/swagger-ui/**")

                    .excludePathPatterns("/user/login");

        }

    }

    public class JwtUtil {

        public static String maketoken(Object obj){

            Date now=new Date();    //当前时间

            long guoqi=now.getTime()+1000*120; //过期时间2分钟

            Date expire=new Date(guoqi);    //转型

            JwtBuilder builder= Jwts.builder().setId("001")

                    .setIssuedAt(now)  //创建时间

                    .setExpiration(expire)  //过期时间

                    .claim("login",obj)    //可以存对象[Object]

                    .signWith(SignatureAlgorithm.HS256,"Mr_xiao");  //设置签名  用HS256算法,设置密钥为Mr_xiao

            String token=builder.compact();

            return token;

        }

    }

    @ApiOperation(value = "用户登录", notes = "登录")

        @GetMapping("/login")

        public R<String> login(@ApiParam(value = "用户名", required = true) String tel, @ApiParam(value = "用户名", required = true) String idcode) {

            System.out.println("前台数据:"+tel+"pwd="+idcode);

            LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();

            lambdaQueryWrapper.eq(StringUtils.isNotEmpty(tel), User::getTel, tel);

            User u1 = userService.getOne(lambdaQueryWrapper);

            System.out.println("user="+u1);

            String token= JwtUtil.maketoken(u1); //封装令牌

            if(u1!=null){

                return R.success(token);

            }else {

                return R.error("登陆失败");

            }

        }

    https://blog.csdn.net/m_xiaozhilei/article/details/121740064

    相关文章

      网友评论

          本文标题:springboot -- jwt

          本文链接:https://www.haomeiwen.com/subject/eywmartx.html