0

私の考えでは、Symfony2 はExpireAt、認証セッション中に行われる各ページのリクエストを拡張すると考えていました。したがって、タイムアウトが 100 秒で、ページ リクエストを行った場合、newExpireAttime() + 100. この「使用するか失うか」の認証機能は、銀行の Web サイトで得られるものと似ています。

デフォルトの機能は、セッション タイムアウトが に設定されている場合のようです100config.ymlユーザーは、できることを 100 秒しか実行できません。

これを実装するのはそれほど難しくないと思いますが、どこで実行する必要がありますか? 私の最初の推測はisEqualTo方法にあります。ユーザーが本物であると判断できたら、expireAt. または、Cookie を変更する必要がありますか?

4

1 に答える 1

0

答えは のrefreshUserメソッドUserProviderと のisEqualToメソッドにありUserClassます。

このisEqualToメソッドは、ユーザー プロバイダーにrefreshUser(UserInstance user).

  • ステップ 1 : (理解が深まるisEqualTo() returns false;につれて、このロジックも可能になります。しかし、本質的に、これはrefreshUser().

すべての基本的なユーザー プロバイダーの例で、refreshUser&loadUserByUsernameは同じです。私が話していることを行うにはrefreshUser()、少し違う必要があります。

  • Step2 : 変更しrefreshUser(UserInterface $user)ます。このメソッドに渡されるのは、元の userClass です。したがって、refreshUser は、expiresAtまたはcredentialsExpireAt

このロジックを使用してrefreshUser()、有効期限を延長するか、元の有効期限 (期限切れ) に設定します。

    if( time() > $user->getCredentialsExpireAt() ){
        $refreshedUser->setCredentialsExpireAt( $user->getCredentialsExpireAt() );
    }
于 2012-12-13T18:58:00.443 に答える