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

Posted

技术标签:

【中文标题】如何在 ktor 中设置会话超时?【英文标题】:How to set session timeout in ktor? 【发布时间】:2020-01-03 14:40:03 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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()

【讨论】:

以上是关于如何在 ktor 中设置会话超时?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

如何在 ASP.NET Core 的 web.config 中设置会话超时

如何在 Ktor 中设置类似于 Retrofit 的`Retrofit.Builder().baseUrl(baseUrl) 的 basePath?

如何在 Ktor 客户端中设置内容类型字符集(不是接受字符集)

在 Spring MVC 中设置会话超时