Spring全局异常处理拦截器JWT令牌使用
一、全局异常处理使用步骤step1创建异常处理器类注意要确保能扫描到异常处理器类|RestControllerAdvice用于标识当前类为REST风格对应的异常处理器ExceptionHandler(Exception.class)标识处理哪些异常RestControllerAdvice public class ProjectExceptionAdvice { //除了自定义的异常处理器保留对Exception类型的异常处理用于处理非预期的异常 ExceptionHandler(Exception.class) public void doException(Exception ex){ System.out.println(嘿嘿,异常你哪里跑) } }二、JWT令牌注意不能存放敏感信息因为base64不是加密算法依赖dependency groupIdcom.auth0/groupId artifactIdjava-jwt/artifactId version4.5.1/version scopecompile/scope /dependency使用生成令牌需要传入用户信息的键值对。解析令牌只需要传回token即可。public class JwtUtils { private static final String KEY itheima; //接收业务数据生成token并返回 public static String genToken(MapString,Object claims){ return JWT.create() .withClaim(claims,claims)//添加载荷 .withExpiresAt(new Date(System.currentTimeMillis()1000*60*60*12))//添加过期时间 .sign(Algorithm.HMAC256(KEY)); //选择算法传入密钥 } //接收token验证token并返回业务数据 public static MapString,Object parseToken(String token){ return JWT.require(Algorithm.HMAC256(KEY))//选择算法传入密钥 .build()//创建JWT验证器 .verify(token)//验证token .getClaim(claims)//获取载荷 .asMap();//转换为Map } }应用我们可以在jwt令牌中存入id和用户名信息这样我们在需要使用的时候可以直接从中获取GetMapping(/userInfo) public ResultUser userInfo(RequestHeader(Authorization) String token){ MapString, Object map JwtUtils.parseToken(token); String username (String) map.get(username); User user userService.findByUserName(username); return Result.success(user); }三、拦截器为了不让用户在未登录状态访问登录页面以外的界面我们可以添加拦截器使用我们创建一个HandlerInterceptor的实现类这个实现类有三种方法要用哪种实现就行Component public class LoginInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletResponse request,HttpServletResponse response,Object handler )throws Exception{ String token request.getHeader(Authorization); try{ MapString, Object claims JwtUtils.parseToken(token); return true; }catch(Exception e){ response.setStatus(401); return false; } } }创建完实现类后我们还得到springMVC的配置文件进行拦截器的注册这个配置类实现了WebMvcConfigurer里面有很多种注册方法我们找到有个addInterceptor见明知意就知道他是注册拦截器的了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2417506.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!