您的位置:首页 > 运维架构 > 网站架构

从零开始搭建自己的网站六:拦截器添加

2018-02-01 17:06 531 查看
因为管理台是需要账号密码才能登录的,所以我们就增加相应的拦截器,防止用户直接通过url直接进入管理台页面。

1、首先对上篇文章中的用户登录验证方法进行修改。"redirect:/manager/index" 意思是重定向到 /manager/index。

/**
* 用户登录验证
*/
@RequestMapping("/loginUser")
public String loginUser(HttpServletRequest request, String username, String password) {
if (StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password)) {
boolean login = userService.login(username, password);
if (login) {
request.getSession().setAttribute("user", username);
return "redirect:/manager/index";
}
}
return "manager/login";
}

2、在Application中加入拦截器配置:登录拦截器和全局拦截器。登录拦截器只对/manager/下的url地址拦截。全局拦截器拦截全局的页面。

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/manager/*");
registry.addInterceptor(new MainInterceptor()).addPathPatterns("/*");
super.addInterceptors(registry);
}

3、编写拦截器。登录拦截器验证的是否session中存在user,不存在就跳转到登录页面。全局拦截器是检查url是否存在,不存在就重定向到404页面。

public class LoginInterceptor implements HandlerInterceptor {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String user = (String) request.getSession().getAttribute("user");
if (StringUtils.isNotBlank(user)) {
return true;
} else {
response.sendRedirect("/login/index");
return false;
}
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

}
}

public class MainInterceptor implements HandlerInterceptor {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
int status = response.getStatus();
if (status == 404) {
response.sendRedirect("/404");
return false;
} else {
return true;
}
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

}
}

4、配置完之后,先不登录,直接浏览器进入 http://localhost:8088/manager/index,页面就会跳转到登录页面。拦截器配置完成
欢迎转载,转载请注明出处 http://www.dingyinwu.com/article/46.html 

如果文章中有任何问题或者可以改进的地方,请大家多提提意见,我会非常感激。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网站建设 拦截器