如何在 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 中设置会话超时?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET Core 的 web.config 中设置会话超时
如何在 Ktor 中设置类似于 Retrofit 的`Retrofit.Builder().baseUrl(baseUrl) 的 basePath?