php登录拦截器,单点登录配合拦截器使用案例

//定义用户拦截器

public classUserInterceptor implements HandlerInterceptor{

@AutowiredprivateJedisCluster jedisCluster;private ObjectMapper objectMapper = newObjectMapper();/**

* 1.获取用户Cookie获取token数据

* 2.判断token中是否有数据

* false 表示没有登陆,则重定向到用户登陆页面

*

* true :表示用户之前登陆过

* 从redis中根据token获取userJSON,

* 再次判断数据是否有数据

*

* false: 没有数据,则重定向到用户登陆页面

* true : 表示有数据,则程序予以放行.*/@Overridepublicboolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

throws Exception {//1.获取Cookiez中的token

String token = null;

Cookie[] cookies=request.getCookies();for(Cookie cookie : cookies) {if("JT_TICKET".equals(cookie.getName())){

token=cookie.getValue();break;

}

}//2.判断token是否有数据

if(token != null){//2.1判断redis集群中是否有数据

String userJSON = jedisCluster.get(token);if(userJSON != null){

User user= objectMapper.readValue(userJSON,User.class);//将user数据保存到ThreadLocal中

UserThreadLocal.set(user);//证明用户已经登陆 予以放行

return true;

}

}//配置重定向

response.sendRedirect("/user/login.html");return false;

}

@Overridepublic voidpostHandle(HttpServletRequest request, HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {//TODO Auto-generated method stub

}

@Overridepublic voidafterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)

throws Exception {//关闭threadLocal

UserThreadLocal.remove();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值