首先还是先看下接口文档,所谓的安全退出其实就是将token从redis当中删除,由于现在跨域还没学,参数中的callback就先不用。
先在UserService接口类中添加安全退出的接口,如下图所示。
添加的代码如下:
//安全退出
TaotaoResult logout(String token);
下面我们到UserServiceImpl类中实现logout接口,如下图所示。
代码如下:
@Override
public TaotaoResult logout(String token) {
jedisClient.expire(USER_SESSION+":"+token, 0);
return TaotaoResult.ok();
}
写完Service层,我们来写Controller层,在UserController中添加一个接口,如下图所示。
代码如下:
@RequestMapping(value = "/user/logout/{token}",method = RequestMethod.GET)
@ResponseBody
public TaotaoResult logout(@PathVariable String token){
TaotaoResult result = userService.logout(token);
return result;
}
写完了接口,我们需要先将taotao-sso工程重新打包到本地maven仓库,然后依次重启taotao-sso和taotao-sso-web工程。
为了测试,我们还需要重新发送下登录请求,获取一个新的token(原来登录的token已经过期了,设置的过期时间是30分钟),如下图所示。
我们使用新的token来测试安全退出,在地址栏访问http://localhost:8088/user/logout/ba9bb30f-1a61-4b61-9931-6b94d1aeefdf,结果如下图所示。
这时我们再尝试通过该token来获取用户信息,在地址栏访问http://localhost:8088/user/token/ba9bb30f-1a61-4b61-9931-6b94d1aeefdf,结果如下图所示,显示token已过期(从登录到现在还不到30分钟),这说明我们的安全退出没问题了。