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 io.javalin.http.staticfiles.Location
import net.h34t.filemure.FilemureApp import net.h34t.filemure.FilemureApp
import net.h34t.filemure.repository.SqliteRepository 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() { fun main() {
@ -18,15 +23,33 @@ fun main() {
staticFiles.hostedPath = "/" staticFiles.hostedPath = "/"
staticFiles.directory = "./public" staticFiles.directory = "./public"
staticFiles.location = Location.EXTERNAL staticFiles.location = Location.EXTERNAL
// staticFiles.
} }
config.requestLogger.http { ctx, ms -> config.requestLogger.http { ctx, ms ->
// log things here // log things here
} }
config.useVirtualThreads = true
config.jetty.modifyServletContextHandler {
it.sessionHandler = fileSessionHandler()
}
} }
.also { .also {
app.register(it) app.register(it)
} }
.start(7070) .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 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