Java拦截器以及自定义注解的使用是怎么样的
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,Java拦截器以及自定义注解的使用是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1,设置预处理,设置不需要拦截的请求@Comp
千家信息网最后更新 2026年11月04日Java拦截器以及自定义注解的使用是怎么样的
Java拦截器以及自定义注解的使用是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1,设置预处理,设置不需要拦截的请求
@Componentpublic class MyWebConfig implements WebMvcConfigurer { private final UserTokenInterceptor userTokenInterceptor; private final SecurityInterceptor securityInterceptor; public MyWebConfig( UserTokenInterceptor userTokenInterceptor, SecurityInterceptor securityInterceptor) { this.userTokenInterceptor = userTokenInterceptor; this.securityInterceptor = securityInterceptor; } @Override public void addInterceptors(InterceptorRegistry registry) { // 定义排除swagger访问的路径配置 String[] swaggerExcludes = new String[] {"/swagger-ui.html", "/swagger-resources/**", "/webjars/**"}; registry .addInterceptor(userTokenInterceptor) .addPathPatterns("/**") .excludePathPatterns( "/user/login", "/static/**", "/*.html", "/*.ico", "/*.json", "/*.png", "/heartbeat/**") .excludePathPatterns(swaggerExcludes); registry .addInterceptor(securityInterceptor) .addPathPatterns("/maintain/**", "/user/**") .excludePathPatterns("/user/login"); }}2.UserTokenInterceptor ,securityInterceptor分别处理不同的请求拦截,执行不同的拦截逻辑。
2个处理的类请求上可以有交集,2个处理类都执行。
@Componentpublic class UserTokenInterceptor implements HandlerInterceptor { private final EmpInfoService empInfoService; public UserTokenInterceptor(EmpInfoService empInfoService) { this.empInfoService = empInfoService; } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 校验handler是否是HandlerMethod if (!(handler instanceof HandlerMethod)) { return true; } // 从请求头中获取token String token = request.getHeader("Authorization"); /** * update:2021/11/30 ShengJieLi * 增加逻辑:Authorization的值不为本系统生成的token时,解密Authorization,获取token并验证 */ if (StrUtil.isNotEmpty(token)) { EmpInfo securityEmployee = empInfoService.queryToken(token); if(securityEmployee != null){ // token有效 String ref = empInfoService.isRef(token); if (StrUtil.isNotBlank(ref)) { response.setHeader("Access-Control-Expose-Headers", "token"); response.addHeader("token", ref); } }else{ //Authorization为PBE加密数据 securityEmployee = empInfoService.analyticQueryToken(token,response); } if (securityEmployee != null) { // token有效 // 将User对象放入到ThreadLocal中 UserLocal.set(securityEmployee); return true; } return false; }// String s = JSONUtil.toJsonStr(ResponseResult.error(ErrorCode.TOKEN_ERROR));// response.setContentType("text/html;charset=UTF-8");// JSONUtil.toJsonStr(s, response.getWriter());// response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); InterceptorExceptionResolver.interceptorError(response,ErrorCode.TOKEN_ERROR); //update 结束 return false; } @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 响应结束后刪除對象 UserLocal.remove(); }}@SecurityGrade({"SUPER_ADMIN", "SYSTEM_ADMIN"})public class SecurityController { private final EmpInfoService empInfoService; public SecurityController(EmpInfoService empInfoService) { this.empInfoService = empInfoService; } @GetMapping("getUserInformation") @ApiOperation("登陸用户信息") @NoAuthorization public ResponseResult getUserInformation(@ApiIgnore HttpServletResponse response) { return empInfoService.getUserInformation(response); }}3.关于注解的使用
@SecurityGrade({"SUPER_ADMIN", "SYSTEM_ADMIN"})public class SecurityController { private final EmpInfoService empInfoService; public SecurityController(EmpInfoService empInfoService) { this.empInfoService = empInfoService; } @GetMapping("getUserInformation") @ApiOperation("登陸用户信息") @NoAuthorization public ResponseResult getUserInformation(@ApiIgnore HttpServletResponse response) { return empInfoService.getUserInformation(response); }}method.getMethodAnnotation(SecurityGrade.class) 获得注解信息,methodAnnotation.value()获得注解内容"SUPER_ADMIN", "SYSTEM_ADMIN"。
看完上述内容,你们掌握Java拦截器以及自定义注解的使用是怎么样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
注解
信息
内容
拦截器
不同
有效
方法
更多
用户
逻辑
问题
处理
束手无策
为此
交集
原因
对此
对象
技能
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网加科技
互联网和科技技术
互联网科技有限公司经营范围
互联网科技有限公司图片
上海互联网科技有限公司
易互联网科技有限公司
迪茉互联网科技
华中科技大学互联网
天津摩尔互联网科技
互联网科技论坛
互联网高科技股票
互联网校园科技培训
受益于互联网科技的高速发展
港股科技和互联网
互联网科技公司有风险吗
互联网科技大赛获奖感言
互联网科技快讯热点
富国互联网科技002692
互联网科技职业技能培训学校
科技互联网专业务虚会材料
科技互联网企业
互联网金融监管科技数据
涨乐互联网科技
易通互联网络科技有限公司
随着互联网科技发展
黑科技闪耀互联网之光
银行科技岗属于互联网吗
九思连强互联网电子科技有限公司
湖北辰鑫科技互联网
互联网金融运营模式中的金融科技