淘淘商城60-SSO单点登录系统之根据token获取用户信息接口开发

版权声明:本文为博主原创文章,如有转载请注明出处,谢谢。 https://blog.csdn.net/pdsu161530247/article/details/82184674

目录

1.分析接口文档

2.根据token获取用户信息接口开发

2.1服务层

2.1.1dao层

2.1.2service层

2.2表现层

2.2.1controller

3.测试访问


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实现类

  1. 根据token查询redis。
  2. 如果查询不到数据。返回用户已经过期。
  3. 如果查询到数据,说明用户已经登录。
  4. 需要重置key的过期时间。
  5. 把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测试访问,成功返回用户信息。

猜你喜欢

转载自blog.csdn.net/pdsu161530247/article/details/82184674