一个简单的登陆拦截器

2019-03-03  本文已影响0人  lhsjohn
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>

。。。。。。。

是不是看了简单的想打人

上一篇下一篇

猜你喜欢

热点阅读