学习淘淘商城第八十九课(单点登录之通过token获取用户信息)

        首先还是看接口文档关于通过token获取用户信息的说明,如下图所示。


            看了说明文档我们便知道该怎么做了,在taotao-sso-interface工程的UserService接口类中添加一个接口,如下图所示。


         添加的接口代码如下:

//通过token获取用户信息
TaotaoResult getUserByToken(String token);
         下面我们到UserServiceImpl类中实现getUserByToken方法,如下图所示。



          实现代码如下:

@Override
	public TaotaoResult getUserByToken(String token) {
		String json = jedisClient.get(USER_SESSION + ":" + token);
		if(StringUtils.isBlank(json)){
			return TaotaoResult.build(400, "token已过期!");
		}
		//如果我们直接把json返回的话,由于字符串中的"在redis中是有特殊意义的,因此
		//"会被转义,这不是我们想要的结果,我们想要的结果是不带转义符的字符串,因此我们
		//需要先把json转换成对象,然后把对象返回。
		TbUser user = JSON.parseObject(json, TbUser.class);
		//我们每访问一次该token,如果该token还没过期,我们便需要更新token的值,再把token恢复
		//到原来的最大值
		jedisClient.expire(USER_SESSION+":"+token, SESSION_EXPIRE);
		//返回结果
		return TaotaoResult.ok(user);
	}
         Service层写完后,我们再来完成Controller层,在UserController中添加一个接口,如下图所示。

        代码如下;

@RequestMapping(value = "/user/token/{token}",method = RequestMethod.GET)
    @ResponseBody
    public TaotaoResult getUserByToken(@PathVariable String token){
    	TaotaoResult result = userService.getUserByToken(token);
    	return result;
    }
        现在我们开始测试,由于在服务中添加了接口,因此我们需要重新打包taotao-sso工程到本地maven仓库,然后我们依次启动taotao-sso和taotao-sso-web工程。我们在地址栏输入http://localhost:8088/user/token/511767e4-7799-4202-a7ec-393e9b4c47f9进行访问(token的值根据你的实际情况来写),可以看到token已过期,这是由于现在距离我上次登录已经很久了,因此显示token过期了。

        

         现在我重新登录下,方法就是再发送下登录请求,如下图所示,可以看到返回一个新的token信息,我们就用这个新的token来测试获取用户信息。

          我们使用新的token来测试,访问地址http://localhost:8088/user/token/ba9bb30f-1a61-4b61-9931-6b94d1aeefdf,结果如下图所示,发现正常返回了用户的信息。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值