Authentication Symfony根据请求延长身份验证超时
我的想法是,Symfony2将在经过身份验证的会话期间发出的每个页面请求上扩展Authentication Symfony根据请求延长身份验证超时,authentication,symfony,security,Authentication,Symfony,Security,我的想法是,Symfony2将在经过身份验证的会话期间发出的每个页面请求上扩展ExpireAt。因此,如果超时时间为100秒,并且您发出了页面请求,那么新的ExpireAt将是time()+100。这种“使用它或丢失它”的身份验证功能类似于您在银行网站上获得的功能 默认功能似乎是当会话超时在config.yml中设置为100时,用户只有100秒的时间来做他们能做的事情 我不认为这很难实现,但应该在哪里实现呢?我的第一个猜测是在isEqualTo方法中。一旦确定用户是可信的,就可以重新设置他们的e
ExpireAt
。因此,如果超时时间为100秒,并且您发出了页面请求,那么新的ExpireAt
将是time()+100
。这种“使用它或丢失它”的身份验证功能类似于您在银行网站上获得的功能
默认功能似乎是当会话超时在config.yml
中设置为100
时,用户只有100秒的时间来做他们能做的事情
我不认为这很难实现,但应该在哪里实现呢?我的第一个猜测是在
isEqualTo
方法中。一旦确定用户是可信的,就可以重新设置他们的expireAt
。或者cookie是否需要修改?答案在于UserProvider
的refreshUser
方法和UserClass
的isEqualTo
方法
isEqualTo
方法告诉用户提供者是否refreshUser(UserInstance user)
- 步骤1:
isEqualTo()返回false代码>(随着理解的增长,这种逻辑也会随之增长。但本质上,这会触发
)refreshUser()
refreshUser
&loadUserByUsername
都是相同的。要实现我所说的功能,refreshUser()
需要稍微不同
- Step2:修改
。传入此方法的是原始userClass。因此refreshUser负责同步refreshUser(UserInterface$user)
或expiresAt
credentialsExpireAt
refreshUser()
中使用此逻辑来延长到期日期或将其设置为原始到期日期(已到期):
您使用的是什么版本的symfony,您使用什么设置来设置超时?最新的.SF 2.1.5-DEV。在用户对象的
config.yml
和ExpireAt
中都有会话生存期。我必须记住我,这样它就永远不会过期。扩展完整身份验证是我关注的重点。这可能只是一个完整身份验证的附带条件当会话超时过期时,uth将消失。我只将会话超时设置为100。您是否尝试了cookie\u lifety
选项?我认为我的主要问题是用户提供程序和用户类。cookie和会话限制发挥了一些作用,因为它们需要存在并保持会话状态。
if( time() > $user->getCredentialsExpireAt() ){
$refreshedUser->setCredentialsExpireAt( $user->getCredentialsExpireAt() );
}