JAVA淘淘商城项目

登录拦截器

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方法

上一篇下一篇

猜你喜欢

热点阅读