【发布时间】:2020-11-29 05:49:26
【问题描述】:
我正在使用 spring boot 编写我的 rest api。我正在尝试在 redis 服务器上维护用户的会话。 Redis 在默认端口6379 上启动并运行。我已经使用生菜罐连接到 redis 服务器。但似乎我的会话没有在 redis 服务器上设置。我尝试使用 uuid 获取会话对象集,它返回类似这样的内容
127.0.0.1:6379> get 02978830-2f35-47b7-a367-1f48e40d0ea0
(nil)
通过 redis cli,我可以设置和获取键值。
127.0.0.1:6379> set 123 123dummy
OK
127.0.0.1:6379> get 123
"123dummy"
127.0.0.1:6379>
这是代码 sn-p,我试图根据他们的活动会话查看用户是否已登录,如果会话在那里,那么我将返回用户。否则我正在记录 em,然后在 redis 服务器上设置会话,然后返回用户。
UserAttributes findUserByEmailIdOrPhoneNumber(HttpServletRequest request,
@RequestParam(value = "userLoginWay", required = false) String userLoginWay,
@RequestParam(value = "userPassword", required = false) String userPassword,
@RequestParam(value = "session", required = false) String session) {
if(request.getSession().getAttribute(session) != null) {
//we have session return user
return user;
} else {
login(userLoginWay, userPassword)
//set the session in redis here
String sessionUuid = UUID.randomUUID().toString();
request.getSession().setAttribute(sessionUuid, user);
return user;
}
}
这个用户是我试图设置为会话值和 uuid 作为键的对象。 这就是我尝试连接到redis服务器的方式
@Configuration
@EnableRedisHttpSession
public class SessionConfig extends AbstractHttpSessionApplicationInitializer {
@Bean
public LettuceConnectionFactory connectionFactory() {
return new LettuceConnectionFactory();
}
}
这就是我在application.properties中所拥有的
#Configuring Redis server to manage sessions
spring.session.store-type=redis
spring.redis.host=localhost
spring.redis.port=6379
知道这有什么问题吗?
【问题讨论】:
标签: spring spring-boot spring-mvc spring-security redis