1.在配置文件中配置拦截器
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截哪些文件(这里是拦截全部,在下面配置不需要拦截的路径) -->
<mvc:mapping path="/**" />
<!-- 排除不需要检查的路径 -->
<mvc:exclude-mapping path="/user/login" />
<!-- 拦截器的实现类 -->
<bean class="com.sqtg.interceptor.AuthInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
2.拦截器的实现类
package com.sqtg.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
/**
* 登录拦截器
* 判断是否登录
*/
public class AuthInterceptor implements HandlerInterceptor {
@Autowired
private RedisTemplate rt;
/**
* 在Controller处理请求之前调用,可以进行编码、安全控制、权限校验等处理;
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//获取前端传递过来的token
String getToken = request.getParameter("token");
//取出redis中存储的token
Object token = rt.opsForValue().get(getToken);
if(token == null){
return false; //验证不通过
}
return true; //验证通过
}
/**
* 在Controller处理请求执行完成后,DispatcherServlet渲染视图之前执行;
* @param request
* @param response
* @param handler
* @param modelAndView
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
}
/**
* 在DispatcherServlet完全处理完请求(视图的渲染)后被调用,可用于清理资源等;
* @param request
* @param response
* @param handler
* @param ex
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
}
}
以上只是拦截器非常简单的使用,如有出错欢迎指正。