私は 1 つのプロジェクトを開発しており、Silhouette認証フレームワークを使用しています。ブラウザ UI からの通常のリクエストには CookieAuthenticator を使用し、REST API リクエストには JWTAuthenticator を使用します。これは、このことが実際にどのように機能するかを完全に理解していないと感じさせるドキュメント付きの Silhouette ソースコードの一部です。
/**
* The service that handles the JWT authenticator.
*
* If the authenticator DAO is deactivated then a stateless approach will be used. But note
* that you will loose the possibility to invalidate a JWT.
*
* @param settings The authenticator settings.
* @param dao The DAO to store the authenticator. Set it to None to use a stateless approach.
* @param idGenerator The ID generator used to create the authenticator ID.
* @param clock The clock implementation.
* @param executionContext The execution context to handle the asynchronous operations.
*/
class JWTAuthenticatorService(
settings: JWTAuthenticatorSettings,
dao: Option[AuthenticatorDAO[JWTAuthenticator]],
idGenerator: IDGenerator,
clock: Clock)(implicit val executionContext: ExecutionContext)
extends AuthenticatorService[JWTAuthenticator]
with Logger {
ドキュメントのこの部分に注意してください
オーセンティケータ DAO が非アクティブ化されている場合は、ステートレス アプローチが使用されます。ただし、* JWT を無効にする可能性が失われることに注意してください。
したがって、彼らが言うように正確に機能します。None
パラメータの値として渡すとdao
、アプリをシャットダウンしても、生成されたトークンは有効のままになります。しかし、バッキング ストアがなければ、これらのトークンはどのように有効に保たれるのでしょうか? アプリを再度起動して同じトークンを使用すると、ユーザーが認証されます。そして、それがどのようにこれを行うのかわかりません。説明していただけますか?