/example/src/main/scala/com/softwaremill/example/session/SetSessionScala.scala
https://github.com/softwaremill/akka-http-session · Scala · 65 lines · 53 code · 12 blank · 0 comment · 0 complexity · ad77d9c52126b6e812160cb0c3d62ce0 MD5 · raw file
- package com.softwaremill.example.session
- import akka.actor.ActorSystem
- import akka.http.scaladsl.Http
- import akka.http.scaladsl.server.Directives._
- import akka.stream.ActorMaterializer
- import com.softwaremill.session.CsrfDirectives._
- import com.softwaremill.session.CsrfOptions._
- import com.softwaremill.session.SessionDirectives._
- import com.softwaremill.session.SessionOptions._
- import com.softwaremill.session._
- import com.typesafe.scalalogging.StrictLogging
- import scala.io.StdIn
- object SetSessionScala extends App with StrictLogging {
- implicit val system = ActorSystem("example")
- implicit val materializer = ActorMaterializer()
- import system.dispatcher
- val sessionConfig = SessionConfig.default(
- "c05ll3lesrinf39t7mc5h6un6r0c69lgfno69dsak3vabeqamouq4328cuaekros401ajdpkh60rrtpd8ro24rbuqmgtnd1ebag6ljnb65i8a55d482ok7o0nch0bfbe")
- implicit val sessionManager = new SessionManager[MyScalaSession](sessionConfig)
- implicit val refreshTokenStorage = new InMemoryRefreshTokenStorage[MyScalaSession] {
- def log(msg: String) = logger.info(msg)
- }
- def mySetSession(v: MyScalaSession) = setSession(refreshable, usingCookies, v)
- val myRequiredSession = requiredSession(refreshable, usingCookies)
- val myInvalidateSession = invalidateSession(refreshable, usingCookies)
- val routes =
- randomTokenCsrfProtection(checkHeader) {
- pathPrefix("api") {
- path("do_login") {
- post {
- entity(as[String]) { body =>
- logger.info(s"Logging in $body")
- mySetSession(MyScalaSession(body)) {
- setNewCsrfToken(checkHeader) { ctx =>
- ctx.complete("ok")
- }
- }
- }
- }
- }
- }
- }
- val bindingFuture = Http().bindAndHandle(routes, "localhost", 8080)
- println("Server started, press enter to stop. Visit http://localhost:8080 to see the demo.")
- StdIn.readLine()
- import system.dispatcher
- bindingFuture
- .flatMap(_.unbind())
- .onComplete { _ =>
- system.terminate()
- println("Server stopped")
- }
- }