Silhouette

discard

Search results for "{{ search.query }}"

No results found for "{{search.query}}". 
  • Guide

    Reference

    Announcement

    Support

    Page

View All Results

Environment

Suggest Edits

The environment defines the key components needed by a Silhouette endpoint. It consists of the following components:

  • Environment type
  • Identity service implementation
  • Authenticator service implementation
  • Request provider implementations
  • Event bus implementation

A configured environment is needed for every endpoint and should be provided through dependency injection. Silhouette plays well with both compile time and runtime dependency injection. You can find examples of both approaches on the example page.

An application can provide different environments for different environment types. With this it's possible to create endpoints that can handle different identitity -> authenticator combinations.

Environment type

The environment type defines the Identity and Authenticator types for an environment. It is possible to implement as many types as needed. This has the advantage that an application isn't bound only to a single Identity -> Authenticator combination.

To define a new environment type, create a new trait with the appropriate Identity and Authenticator types:

  • Scala
trait SessionEnv extends Env {
  type I = User
  type A = SessionAuthenticator
}
trait JWTEnv extends Env {
  type I = User
  type A = JWTAuthenticator
}

Now with this types you can create different environments:

  • Scala
val sessionEnv = Environment[SessionEnv](...)
val jwtEnv = Environment[JWTEnv](...)

What's Next

Endpoints