我目前正在使用PHP框架Symfony开发一个项目。 我已经配置了安全页面,为会话超时定义了30分钟,并设置了如果未经身份验证的用户尝试访问安全页面,用户应该重定向的页面。
我已经注意到,如果用户在用户会话过期后尝试访问受保护的页面,则用户也会重定向到该用户。 在这种情况下,我想显示一条消息,主要是说“您的会话已过期。请重新连接。”
我怎么能实现这个目标?
答案 0 :(得分:2)
您可以在每次成功验证时设置Cookie。然后,如果会话为空,但cookie存在,则说“会话已过期”。
另一种更丑陋的方式,即使禁用了cookie也可以使用:始终将会话ID添加到URL。然后,再次,如果它存在于URL中,但会话为空,则我们处于到期状态。
答案 1 :(得分:1)
检查myUser-> timedout会更容易。
http://trac.symfony-project.org/changeset/1722
Symfony 1.4没有这种方法,但您可以创建它:
class myUser extends sfBasicSecurityUser
{
// ...
public function getTimedOut()
{
return $this->timedout;
}
// ...
}
正确填充属性timedout。
然后在模板中检查其值:
<?php if($sf_user->getTimedOut()) : ?>
<div class="error">Session timeout...</div>
<?php endif ?>