クラス PersistentTokenBasedRememberMeServices

java.lang.ObjectSE
org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices
org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices
実装されたすべてのインターフェース:
org.springframework.beans.factory.Awareorg.springframework.beans.factory.InitializingBeanorg.springframework.context.MessageSourceAwareLogoutHandlerRememberMeServices

public class PersistentTokenBasedRememberMeServices extends AbstractRememberMeServices
Barry Jaspan の永続的ログイン Cookie のベストプラクティスの改善に基づく RememberMeServices 実装。ユーザー名は Cookie の一部として保存されず、PersistentTokenRepository の実装を介して永続ストアから取得されるという点で、前述のアプローチに若干の変更があります。後者はシリーズ識別子に一意の制約を課す必要があるため、同じ識別子を 2 人の異なるユーザーに割り当てることはできません。

パスワードの変更、ユーザーの削除、ユーザーステータスの設定などのユーザー管理は、ユーザーの永続的なトークンのメンテナンスと組み合わせる必要があります。

このクラスはトークンの作成日を使用して、提示された Cookie が設定された tokenValiditySeconds プロパティより古いかどうかを確認し、この場合は認証を拒否しますが、これらのトークンをストレージから削除しないことに注意してください。期限切れのトークンをデータベースから削除するには、適切なバッチプロセスを定期的に実行する必要があります。

導入:
2.0
  • フィールドの詳細

  • コンストラクターの詳細

  • メソッドの詳細

    • processAutoLoginCookie

      protected UserDetails processAutoLoginCookie(StringSE[] cookieTokens, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      シリーズ ID を使用して、提示された Cookie データをトークンリポジトリで検索します。データが永続ストアのデータと正常に比較されると、新しいトークンが生成され、同じシリーズで保存されます。対応する Cookie 値がレスポンスに設定されます。
      次で指定:
      クラス AbstractRememberMeServicesprocessAutoLoginCookie 
      パラメーター:
      cookieTokens - シリーズとトークンの値
      request - リクエスト
      response - 必要に応じて Cookie を変更できるようにするレスポンス。
      戻り値:
      Cookie が正常に検証された場合、対応するユーザーアカウントの UserDetails。
      例外:
      RememberMeAuthenticationException - 送信された Cookie に対応するトークンが保存されていない場合、または永続ストアのトークンの有効期限が切れている場合。
      InvalidCookieException - Cookie に期待どおりの 2 つのトークンがない場合。
      CookieTheftException - 提示されたシリーズ値が見つかったが、格納されたトークンが提示されたものと異なる場合。
    • onLoginSuccess

      protected void onLoginSuccess(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication successfulAuthentication)
      新しいシリーズ番号で新しい永続的ログイントークンを作成し、データを永久トークンリポジトリに保存し、対応する Cookie をレスポンスに追加します。
      次で指定:
      クラス AbstractRememberMeServicesonLoginSuccess 
    • logout

      public void logout(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, Authentication authentication)
      クラスからコピーされた説明: AbstractRememberMeServices
      LogoutHandler の実装。デフォルトの動作は cancelCookie() を呼び出すことです。
      次で指定:
      インターフェース LogoutHandlerlogout 
      オーバーライド:
      クラス AbstractRememberMeServiceslogout 
      パラメーター:
      request - HTTP リクエスト
      response - HTTP レスポンス
      authentication - 現在のプリンシパルの詳細
    • generateSeriesData

      protected StringSE generateSeriesData()
    • generateTokenData

      protected StringSE generateTokenData()
    • setSeriesLength

      public void setSeriesLength(int seriesLength)
    • setTokenLength

      public void setTokenLength(int tokenLength)
    • setTokenValiditySeconds

      public void setTokenValiditySeconds(int tokenValiditySeconds)
      オーバーライド:
      クラス AbstractRememberMeServicessetTokenValiditySeconds