object CSRF
- Source
- CSRF.scala
Linear Supertypes
Ordering
- Alphabetic
- By Inheritance
Inherited
- CSRF
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- All
Type Members
- type CSRFCheckFailed = CSRFCheckFailed.type
- abstract type CSRFToken
Value Members
- val CSRFTokenLength: Int
- val SHA1ByteLen: Int
- val SigningAlgo: String
-
def
apply[F[_], G[_]](headerName: CaseInsensitiveString = ..., cookieName: String = "csrf-token", clock: Clock = Clock.systemUTC(), secure: Boolean = false, onFailure: Response[G] = Response[G](Status.Forbidden), createIfNotFound: Boolean = true, key: SecretKey, headerCheck: (Request[G]) ⇒ Boolean)(implicit arg0: Sync[F], arg1: Applicative[G]): CSRF[F, G]
Default method for constructing CSRF middleware *
-
def
buildSigningKey[F[_]](array: Array[Byte])(implicit F: Sync[F]): F[SecretKey]
Build a new HMACSHA1 Key for our CSRF Middleware from key bytes.
Build a new HMACSHA1 Key for our CSRF Middleware from key bytes. This operation is unsafe, in that any amount less than 20 bytes will throw an exception when loaded into
Mac
, and any value above will be truncated (not good for entropy).Use for loading a key from a config file, after having generated one safely
-
def
default[F[_], G[_]](headerName: CaseInsensitiveString = ..., cookieName: String = "csrf-token", clock: Clock = Clock.systemUTC(), secure: Boolean = false, onFailure: Response[G] = Response[G](Status.Forbidden), createIfNotFound: Boolean = true, key: SecretKey, host: String, sc: Scheme, port: Option[Int])(implicit arg0: Sync[F], arg1: Applicative[G]): CSRF[F, G]
Default method for constructing CSRF middleware *
-
def
defaultOriginCheck[F[_]](r: Request[F], host: String, sc: Scheme, port: Option[Int]): Boolean
Check origin matches our proposed origin.
-
def
generateSigningKey[F[_]]()(implicit F: Sync[F]): F[SecretKey]
Generate a signing Key for the CSRF token *
-
def
isEqual(s1: String, s2: String): Boolean
A Constant-time string equality *
- def proxyOriginCheck[F[_]](r: Request[F], host: Host, xff: X-Forwarded-For): Boolean
-
def
tokensEqual(s1: CSRFToken, s2: CSRFToken): Boolean
A Constant-time string equality *
- def unlift(s: CSRFToken): String
-
def
withGeneratedKey[F[_], G[_]](headerName: CaseInsensitiveString = ..., cookieName: String = "csrf-token", clock: Clock = Clock.systemUTC(), secure: Boolean = false, onFailure: Response[G] = Response[G](Status.Forbidden), createIfNotFound: Boolean = true, headerCheck: (Request[G]) ⇒ Boolean)(implicit arg0: Sync[F], arg1: Applicative[G]): F[CSRF[F, G]]
Sugar for instantiating a middleware by generating a key *
-
def
withKeyBytes[F[_], G[_]](keyBytes: Array[Byte], headerName: CaseInsensitiveString = ..., cookieName: String = "csrf-token", clock: Clock = Clock.systemUTC(), onFailure: Response[G] = Response[G](Status.Forbidden), secure: Boolean = false, createIfNotFound: Boolean = true, headerCheck: (Request[G]) ⇒ Boolean)(implicit arg0: Sync[F], arg1: Applicative[G]): F[CSRF[F, G]]
Sugar for pre-loading a key *
- object CSRFCheckFailed extends Exception with NoStackTrace with Product with Serializable