Adds file session handling.

This commit is contained in:
Stefan Schallerl 2025-02-07 10:03:55 +01:00
parent 07c8758182
commit bef0d0e536
2 changed files with 28 additions and 2 deletions

View file

@ -4,6 +4,11 @@ import io.javalin.Javalin
import io.javalin.http.staticfiles.Location
import net.h34t.filemure.FilemureApp
import net.h34t.filemure.repository.SqliteRepository
import org.eclipse.jetty.http.HttpCookie
import org.eclipse.jetty.server.session.DefaultSessionCache
import org.eclipse.jetty.server.session.FileSessionDataStore
import org.eclipse.jetty.server.session.SessionHandler
import java.io.File
fun main() {
@ -18,15 +23,33 @@ fun main() {
staticFiles.hostedPath = "/"
staticFiles.directory = "./public"
staticFiles.location = Location.EXTERNAL
// staticFiles.
}
config.requestLogger.http { ctx, ms ->
// log things here
}
config.useVirtualThreads = true
config.jetty.modifyServletContextHandler {
it.sessionHandler = fileSessionHandler()
}
}
.also {
app.register(it)
}
.start(7070)
}
fun fileSessionHandler() = SessionHandler().apply {
sessionCache = DefaultSessionCache(this).apply {
sessionDataStore = FileSessionDataStore().apply {
val baseDir = File(System.getProperty("java.io.tmpdir"))
this.storeDir = File(baseDir, "javalin-session").apply { mkdirs() }
}
}
maxInactiveInterval = 30 * 60
httpOnly = true
isSecureRequestOnly = true
sameSite = HttpCookie.SameSite.STRICT
}

View file

@ -1,3 +1,6 @@
package net.h34t.filemure
data class Session(val id: Long, val email: String)
import java.io.Serializable
data class Session(val id: Long, val email: String) : Serializable