版权声明:本文为博主原创文章,如有转载请注明出处,谢谢。 https://blog.csdn.net/pdsu161530247/article/details/82184674
目录
1.分析接口文档
根据接口文档我们可以看出
请求的url:/user/token/{token}
参数:String token需要从url中取。
返回值:json数据。使用TaotaoResult包装Tbuser对象。
2.根据token获取用户信息接口开发
2.1服务层
2.1.1dao层
使用JedisClient查询redis。
2.1.2service层
service接口
在taotao-sso-interface创建接口
/**
* 根据token从redis获取user
* @param token
* @return
*/
TaotaoResult getUserByToken(String token);
service实现类
- 根据token查询redis。
- 如果查询不到数据。返回用户已经过期。
- 如果查询到数据,说明用户已经登录。
- 需要重置key的过期时间。
- 把json数据转换成TbUser对象,然后使用TaotaoResult包装并返回。
在taotao-sso-service创建实现类
/**
* 根据token作为key,从redis中获取userJson
*/
@Override
public TaotaoResult getUserByToken(String token) {
//1.根据token从redis查询userJson
String key = USER_SESSION + ":" +token;
String userJson = jedisClient.get(key);
//2.如果userJson为空,说明用户已过期
if(StringUtils.isBlank(userJson)) {
return TaotaoResult.build(400, "登录已过期,请重新登录");
}
//3.用户登录成功,重新设置过期时间
jedisClient.expire(key, SESSION_EXPIRE_TIME);
//4.将userJson转为tbUser对象返回
TbUser tbUser = JsonUtils.jsonToPojo(userJson, TbUser.class);
return TaotaoResult.ok(tbUser);
}
2.2表现层
2.2.1controller
请求的url:/user/token/{token}
参数:String token需要从url中取。
返回值:json数据。使用TaotaoResult包装Tbuser对象。
/**
* 接收token,调用service服务
* @param token
* @return
*/
@RequestMapping(value="/user/token/{token}",method=RequestMethod.GET)
@ResponseBody
public TaotaoResult getUserByToken(@PathVariable String token) {
TaotaoResult result = userLoginService.getUserByToken(token);
return result;
}
3.测试访问
安装taotao-sso,启动taotao-sso、taotao-sso-web
从redis中找一个存在的token:70ae13a6-87bb-4e3a-b713-35d7979c4bd8
使用RESETClirnt测试访问,成功返回用户信息。