使用Spring的@EnableRedisHttpSession时如何在控制器中获取会话或Redis密钥的到期时间?

问题描述 投票:0回答:1

我正在使用Spring Boot和Spring会话。这是我的简单配置。

@EnableRedisHttpSession
public class Config {}

默认情况下,Spring Boot创建一个RedisConnectionFactory,我在host文件中放入了相应的portapplication.yml信息等(为简便起见已删除)

我还添加了与安全性有关的信息(为简便起见,从此处删除了此信息。

现在是我的控制者。

@RestController
public HomeController {

    @GetMapping("/hello")
    public String home(HttpSession session){
        // I need redis's key's expiration time. or session id's expiration time. 
        // how can I get this? Should I use HttpSession?
        return "hello";
    }

}

如何获得控制器中的会话到期时间?或者更确切地说,如何获得Redis密钥的到期时间?

spring-boot redis httpsession spring-data-redis spring-session
1个回答
0
投票

您需要使用HttpSession

您可以将其作为参数添加到控制器方法中,如下所示(也有问题)。

@GetMapping("/hello")
public String home(HttpSession session){
    // I need redis's key's expiration time. or session id's expiration time. 
    // how can I get this? Should I use HttpSession?
    int ttl = session.getMaxInactiveInterval(); // this should give redis TTL
    return "hello";
}

并且您可以使用HttpSession的getMaxInactiveInterval方法来获取redis的TTL值,如上面的代码所示。

© www.soinside.com 2019 - 2024. All rights reserved.