学习淘淘商城第八十九课(单点登录之通过token获取用户信息)
2017-06-09 14:50
507 查看
首先还是看接口文档关于通过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,结果如下图所示,发现正常返回了用户的信息。
看了说明文档我们便知道该怎么做了,在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,结果如下图所示,发现正常返回了用户的信息。
相关文章推荐
- 淘淘商城系列——单点登录之通过token获取用户信息
- 通过令牌(Token)获取登录用户信息
- Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)
- Spring Cloud云架构 SSO单点登录之OAuth2.0 根据token获取用户信息(4)
- (十四) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)
- 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息
- Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)
- 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)
- 通过Python 获取Linux系统用户的登录信息
- seam获取当前登录用户的信息~
- 通过用户登录验证学习WebService的使用
- Oracle通过SYS_CONTEXT ()获取用户连接信息
- 超强获取计算机信息类(可获取cpu序列号,网卡地址,ip地址,硬盘id,登录系统用户,计算机名等等)
- QTP的那些事--通过WMI获取session中的用户信息的验证码
- 获取当前登录用户的信息的代码
- MVC: [NonAction] 里面的获取不到用户登录信息 User.Identity.Name
- Asp.net2.0身份验证技术学习入门---新用户注册,登录,显示用户信息
- 如何在主题与皮肤中获取Portal登录用户信息
- ASP.NET MVC通过OAuth调用Google API获取用户信息
- servlet学习笔记3——用户登录网站(通过session验证登陆用户)