登录拦截器
2018-06-08 本文已影响9人
WebGiser
用户在访问页面之前,都会先判断其是否登录,可以通过配置拦截器实现。
1、拦截器代码
//HandlerInterceptor是拦截器,return值为false,表示不再继续执行拦截器postHandle和afterCompletion代码
@Service
public class LoginInterceptor implements HandlerInterceptor {
//在Handler执行之前处理
//判断用户是否登录
//从cookie中取token
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
//判断用户是否登录,
// String token = CookieUtils.getCookieValue(request, "TT_TOKEN");
// //根据token换取用户信息,调用sso系统的接口。
// TbUser user = userService.getUserByToken(token);
// //取不到用户信息
// if (null == user) {
// //跳转到登录页面,把用户请求的url作为参数传递给登录页面。
// response.sendRedirect(userService.SSO_BASE_URL + userService.SSO_PAGE_LOGIN
// + "?redirect=" + request.getRequestURL());
// //返回false
// return false;
// }
// //取到用户信息,放行
// //返回值决定handler是否执行。true:执行,false:不执行。
// return true;
System.out.println("执行preHandle方法");
return false;
}
// handler执行之后,返回ModelAndView之前
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("执行postHandle方法");
}
// 返回ModelAndView之后。
//响应用户之后
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println("执行afterCompletion方法");
}
}
2、在springMVC中配置拦截器
<!--配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/index"/>
<bean class="com.taotao.Service.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
3、测试
在浏览器端输入http://localhost:8080/index后,控制台会打印 执行preHandle方法。