springboot 实现拦截器权限过滤,以及用拦截器实现操作日志功能

来源:互联网 发布:指纹膜 淘宝 编辑:程序博客网 时间:2024/06/07 11:34
package com.hcmony.web.interceptor;import com.hcmony.service.auth.ValidationService;import com.hcmony.service.auth.impl.ValidationServiceImpl;import org.apache.log4j.Logger;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.context.support.WebApplicationContextUtils;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * <h3>权限拦截</h3> * <p></p> * * @author hcmony * @since V1.0.0, 2017/12/15 18:13 */@Configurationpublic class AuthInterceptor extends HandlerInterceptorAdapter {   private final Logger logger                         = Logger.getLogger(AuthInterceptor.class);      @Autowired   private ValidationService validationService; //这个service可以用db或者缓存取数据查询   @Override   public boolean preHandle(HttpServletRequest request, HttpServletResponse response,                      Object handler) throws Exception {      //todo 后面具体实现 此处后面可以做日志操作记录      String token = request.getHeader("token");      if(token==null){         request.getRequestDispatcher("/notLogin").forward(request,response);         return false;      }      //假如无法注入的情况下      if(validationService==null){         BeanFactory factory = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());         validationService = (ValidationServiceImpl) factory.getBean("validationServiceImpl");      }
      String user = (String) validationService.verifyAccessToken(token);      if(user==null){         request.getRequestDispatcher("/noAuth").forward(request,response);         return false;      }      return true;   }   @Override   public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,                     ModelAndView modelAndView) throws Exception {      // log.info("Controller请求处理之后进行调用,但是在视图被渲染之前");   }   @Override   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,                        Exception ex) throws Exception {      // log.info("在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要是用于进行资源清理工作)");   }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 林悦秦若菲 菲悦狐狸 菲悦舞蹈 悦诗风吟和菲诗小铺哪个好 心血管疾病的症状 心血管疾病症状 心血管系统 心血管堵塞症状 心血管病 山西心血管病医院 心血管破裂 心血管内科排名 心血管排名 心血管脆弱 心血管照影 心血管专科 365心血管网 心血管网 心血管疾病早期症状 心血管病人适宜锻炼时间 长城会心血管2019日期 心血管内科出科小结 心血管堵塞吃什么好 心血管医院全国排名 心血管内科出科自我鉴定100字 上海心血管医院排名 心的血管 心哀竭能活多久 心衰竭能活多久 急性左心衰竭 心功能衰竭 左心衰竭三大特征 急性左心衰竭的表现 肺心衰竭晚期症状 心功能衰竭能活多久 心衰竭是什么病 急性左心衰竭的临床表现 左心衰竭原因 左心衰竭表现 急性心功能衰竭 右心衰竭的体征