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

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

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

        protected java.lang.String generateSeriesData()
      • generateTokenData

        protected java.lang.String generateTokenData()
      • setSeriesLength

        public void setSeriesLength​(int seriesLength)
      • setTokenLength

        public void setTokenLength​(int tokenLength)