如何在ktor中设置会话超时?

时间:2019-08-30 10:32:53

标签: ktor

如何设置超时时间,如果没有用户活动,会话将过期吗? 我正在寻找码头附近的东西:

ServletContextHandler webappContext = new ServletContextHandler(ServletContextHandler.SESSIONS);
... 
webappContext.getSessionHandler().setMaxInactiveInterval(timeout_in_sec);

1 个答案:

答案 0 :(得分:0)

您必须自己实现,这取决于您的存储管理器。如果您看最简单的一个

https://github.com/ktorio/ktor/blob/master/ktor-server/ktor-server-core/jvm/src/io/ktor/sessions/SessionStorageMemory.kt

会话存储在并发映射中

private val sessions = ConcurrentHashMap<String, ByteArray>()

相反,您需要使会话期满的东西。例如,您可以使用番石榴缓存 https://github.com/google/guava/wiki/CachesExplained



private val engineCache: Cache<String, ByteArray> = CacheBuilder.newBuilder()
            .maximumSize(50)
            .expireAfterAccess(30, TimeUnit.MINUTES)
            .build()