Как установить тайм-аут сеанса в ktor?

Как установить тайм-аут, по истечении которого при отсутствии активности пользователя сеанс истекает? Ищу что-то вроде пристани:

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

person Ognyan    schedule 30.08.2019    source источник


Ответы (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>()

Вместо этого вы хотите что-то, что истечет срок действия сеансов. Например, вы можете использовать кеш Guava https://github.com/google/guava/wiki/CachesExplained



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