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

因为管理台是需要账号密码才能登录的,所以我们就增加相应的拦截器,防止用户直接通过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 

如果文章中有任何问题或者可以改进的地方,请大家多提提意见,我会非常感激。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值