Silhouette JWT令牌如何在无状态模式下保持有效?

时间:2016-04-09 17:10:07

标签: scala playframework silhouette

我正在开发一个项目并使用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参数的值传递时,即使我关闭了应用,生成的令牌也会保持有效。但没有后备存储这些令牌如何保持有效?当我再次启动应用程序并使用相同的令牌时,它会对用户进行身份验证。我不知道它是怎么做到的。你能解释一下吗?

0 个答案:

没有答案