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

来源:互联网 发布:wpf listbox 数据绑定 编辑:程序博客网 时间:2024/06/06 03:23

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


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


         添加的接口代码如下:

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



          实现代码如下:

@Overridepublic 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,结果如下图所示,发现正常返回了用户的信息。




阅读全文
0 0