您的位置:首页 > 编程语言 > Java开发

Spring Boot 学习系列之拦截器,实现用户登录拦截

2017-12-22 21:25 441 查看
Web开发中,使用Spring提供的HandlerInterceptor(拦截器),实现登录拦截器,用于拦截用户session是否过期

一、自定义拦截器类

public class LoginInterceptor implements HandlerInterceptor {

private static final Logger log = LoggerFactory.getLogger(LoginInterceptor.class);

/**
* 进入controller层之前拦截请求
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {

log.info("---------------------开始进入请求地址拦截----------------------------");
HttpSession session = httpServletRequest.getSession();
UserInfo userInfo = (UserInfo)session.getAttribute("user");
if(userInfo!=null){
return true;
}
else{
//PrintWriter printWriter = httpServletResponse.getWriter();
//printWriter.write("{code:0,message:\"会话已过期,请重新登录!\"}");
httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/admin");
return false;
}

}

@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
log.info("--------------处理请求完成后视图渲染之前的处理操作---------------");
}

@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
log.info("---------------视图渲染之后的操作-------------------------0");
}
}


二、在Application类中,声明拦截器

@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册自定义拦截器,添加拦截路径和排除拦截路径
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/admin/**")
.excludePathPatterns("/admin/login.do").excludePathPatterns("/admin");
}


其中:

addPathPatterns添加需要拦截的命名空间;

excludePathPatterns添加排除拦截命名空间

以上两部即可实现传统会话拦截。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring-boot
相关文章推荐