Session tokens remain valid on the server after user logout, creating a security gap where:
Upgrade to version 2.10.0. After upgrading, users must update their AuthController implementation to use the new clear_session/2
function with their OTP app name. You will be prompted to do so with a compile-time error.
If you do not have the setting require_token_presence_for_authentication?
set to true
in the tokens
section, you will see a separate error:
** (Spark.Error.DslError) authentication -> session_identifier:
Must set `authentication.session_identifier` to either `:jti` or `:unsafe`.
...
In order to revoke sessions on log out when not storing tokens directly in the session, we must have some unique identifier with which to do so. You should prefer to enable require_token_presence_for_authentication?
if possible, instead of setting this to :jti
. Note that whatever you do here, if you did not previously have require_token_presence_for_authentication?
set to true
, setting it to true
or setting authentication.session_identifier
to :jti
will log out all of your currently authenticated users.
You can manually revoke tokens in your logout/2
handler in your auth controller.
{ "nvd_published_at": "2025-06-17T15:15:53Z", "cwe_ids": [ "CWE-613" ], "severity": "LOW", "github_reviewed": true, "github_reviewed_at": "2025-06-17T14:20:46Z" }