标签:拦截器 登录 路径 pri 校验 v1 api response
一.登录校验成功放行
/** * 进⼊到controller之前的⽅法 * @param request * @param response * @param handler * @return * @throws Exception */ @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception { try { String accesToken = request.getHeader("token"); if (accesToken == null) { accesToken = request.getParameter("token"); } if (StringUtils.isNotBlank(accesToken)) { Claims claims = JWTUtils.checkJWT(accesToken); if (claims == null) { //告诉登录过期,重新登录 sendJsonMessage(response, JsonData.buildError("登录过期,重新登录")); return false; } Integer id = (Integer) claims.get("id"); String name = (String) claims.get("name"); request.setAttribute("user_id", id); request.setAttribute("name", name); return true; } }catch (Exception e){} sendJsonMessage(response, JsonData.buildError("登录过期,重新登录")); return false; }
二.登录不成功返回json数据
/** * 响应json数据给前端 * @param response 第2集 ⼩滴课堂实战之loginInterceptor注册和放⾏路径 简介:loginInterceptor 拦截器注册和路径校验配置 继承 WebMvcConfigurer 配置拦截路径和放⾏路径 * @param obj */ public static void sendJsonMessage(HttpServletResponse response, Object obj){ try{ ObjectMapper objectMapper = new ObjectMapper(); response.setContentType("application/json; charset=utf- 8"); PrintWriter writer = response.getWriter(); writer.print(objectMapper.writeValueAsString(obj)); writer.close(); response.flushBuffer(); }catch (Exception e){ e.printStackTrace(); } }
注解:返回给前端的数据需要序列化,运用objectMapper序列化参数。
三.拦截器注册和路径校验配置
/** * 拦截器配置 * * 不⽤权限可以访问url /api/v1/pub/ * 要登录可以访问url /api/v1/pri/ */ @Configuration public class InterceptorConfig implements WebMvcConfigurer { @Bean LoginInterceptor loginInterceptor(){ return new LoginInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { //拦截全部 registry.addInterceptor(loginInterceptor()).addPathPatterns("/api/v1/pri/*/*/* *") //不拦截哪些路径 斜杠⼀定要加 .excludePathPatterns("/api/v1/pri/user/login","/api/v1/pri/user/register"); WebMvcConfigurer.super.addInterceptors(registry); } }
注解:实现WebMvcConfigure接口重写addInterceptors方法,添加拦截路径时需注意路径的写法,excludePathPatterns("/api/v1/pri/user/login","/api/v1/pri/user/register")指定不需要拦截的路径。 最后要调用父类的addInterceptors方法提交注册器。
标签:拦截器,登录,路径,pri,校验,v1,api,response 来源: https://www.cnblogs.com/datadogapache/p/14954297.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。