public Map<Object, Object> login(@RequestParam("loginname") String loginName, @RequestParam("password") String password) { System.out.println("登录"); UserContext userContext = null; Map<Object, Object> loginInfo = new HashMap(); if (emailPattern.matcher(loginName).matches() == true) { userContext = userService.checkLoginEmail(loginName, password); } else { userContext = userService.checkLoginUser(loginName, password); } if (userContext == null) { loginInfo.put("erro", "缺少用户"); return loginInfo; } else { UserContextHolder.set(userContext); } // sign token String token = Authentication.sign(userContext); loginInfo.put("code", 200); loginInfo.put("token", token); loginInfo.put("message", "登陆成功"); return loginInfo; }在这个登录接口把userContext放入redis,方便之后接口取出来
时间: 2024-04-15 22:28:09 浏览: 96
在这个登录接口中,将`userContext`放入Redis中以便之后的接口可以获取到它。通过将`userContext`存入Redis,可以实现不同请求之间的数据共享。
以下是一个示例代码,展示了如何将`userContext`对象存入Redis:
```java
public Map<Object, Object> login(@RequestParam("loginname") String loginName, @RequestParam("password") String password) {
// ... 其他代码 ...
if (userContext == null) {
loginInfo.put("erro", "缺少用户");
return loginInfo;
} else {
// 将userContext存入Redis
String key = "userContext:" + userContext.getUserId();
redisTemplate.opsForValue().set(key, userContext);
// ... 其他代码 ...
}
// ... 其他代码 ...
}
```
上述代码中使用了`redisTemplate`来操作Redis,需要确保已经正确配置了Redis连接。这里使用`opsForValue().set(key, userContext)`方法将`userContext`对象以指定的`key`存入Redis中。
在之后的接口中,可以通过相同的`key`从Redis中获取`userContext`对象:
```java
public void someOtherAPI() {
// 从Redis中获取userContext对象
String key = "userContext:" + userId;
UserContext userContext = redisTemplate.opsForValue().get(key);
// ... 使用userContext对象进行操作 ...
}
```
在上述代码中,通过`opsForValue().get(key)`方法从Redis中获取到之前存入的`userContext`对象。
需要注意的是,使用Redis来存储`userContext`对象需要确保Redis连接的可靠性和一致性,并且需要在适当的时候手动删除或更新存储的数据。另外,还可以根据具体业务需求设置存储数据的过期时间等。
阅读全文