美文网首页
一个简单的登陆拦截器

一个简单的登陆拦截器

作者: lhsjohn | 来源:发表于2019-03-03 23:00 被阅读0次
    package cn.e3mall.cart.interceptor;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.servlet.HandlerExceptionResolver;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import cn.e3mall.common.utils.CookieUtils;
    import cn.e3mall.common.utils.E3Result;
    import cn.e3mall.pojo.TbUser;
    import cn.e3mall.sso.service.TokenService;
    /**
    * 用户登录拦截器
    * @author lihuashuo
    *
    */
    public class LoginInterceptor implements HandlerInterceptor {
     
      @Autowired
      private TokenService tokenService;
      
      @Override
      public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
              throws Exception {
          //前处理,执行handler之前处理
          //返回 true,放行 false:拦截
          //1.从cookie中取token
          String token = CookieUtils.getCookieValue(request, "token");
          //2.如果没有token,未登录状态,直接放行
          if(StringUtils.isBlank(token)) {
              return true;
          }
          //3.取到token,需要调用sso系统的服务,根据token取用户信息
          E3Result e3Result = tokenService.getUserByToken(token);
          //4.没有取到用户信息。登录过期,直接放行
          if(e3Result.getStatus()!=200) {
              return true;
          }
          //5.取到用户信息。登录状态。
          TbUser user =(TbUser) e3Result.getData();
          //6.把用户信息放到request中,只需要在Controller中判断是否包含user信息。放行
          request.setAttribute("user", user);
          return true;    
      }
    
    
      @Override
      public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
              ModelAndView modelAndView) throws Exception {
         //handler执行之后,返回ModeAndView之前
         //
          
      }
    
      @Override
      public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
              throws Exception {
        //完成处理,返回ModelAndView之后
        //可以在此处理异常
          
      }
    
    
      
    }
    
    
    
    
    

    拦截器配置 在springmvc.xml文件中

        <!-- 拦截器配置 -->
           <mvc:interceptors>
            <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="cn.e3mall.cart.interceptor.LoginInterceptor"></bean>
            </mvc:interceptor>
    
    

    。。。。。。。

    是不是看了简单的想打人

    相关文章

      网友评论

          本文标题:一个简单的登陆拦截器

          本文链接:https://www.haomeiwen.com/subject/mjjvuqtx.html