0

我的想法是 Symfony2 将扩展ExpireAt在经过身份验证的会话期间发出的每个页面请求。因此,如果超时为 100 秒并且您发出了页面请求,则新的ExpireAt将是time() + 100. 这种“使用或丢失”身份验证功能类似于您在银行网站上获得的功能。

默认功能似乎是当会话超时设置为100config.yml,用户只有 100 秒的时间来做他们可以做的事情。

我认为这不会很难实施,但应该在哪里完成?我的第一个猜测是isEqualTo方法。一旦您可以确定用户是真实的,您就可以重新启动他们的expireAt. 还是需要修改cookie?

4

1 回答 1

0

答案在于 的refreshUser方法UserProvider和 的isEqualTo方法UserClass

isEqualTo方法告诉用户提供者是否要refreshUser(UserInstance user).

  • Step1 : isEqualTo() returns false;(随着你的理解的增长,这个逻辑也可以。但本质上,这会触发refreshUser().

在所有基本用户提供程序示例中,refreshUser&loadUserByUsername是相同的。做我所说的,refreshUser()需要有点不同。

  • Step2:修改refreshUser(UserInterface $user)。传递给这个方法的是原始的 userClass。所以 refreshUser 负责同步expiresAtorcredentialsExpireAt

我在我的使用此逻辑refreshUser()来延长到期日期或将其设置为原始到期日期(已过期):

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