【问题标题】:How to auto redirect a user in Symfony after a session time out?会话超时后如何在 Symfony 中自动重定向用户?
【发布时间】:2014-04-09 13:36:42
【问题描述】:

我试图在一定秒数后强制超时,但是即使注销有效,我也在尝试实现自动重定向到我无法实现的 URL。有任何想法吗?

我正在关注(投票最多的答案)上给出的示例:How to log users off automatically after a period of inactivity?

【问题讨论】:

  • 所以你想重定向而不是注销?无论他们提出额外请求,您是否也希望这种情况发生? IE 用户在页面上停留 20 分钟然后被重定向?
  • 我想同时进行注销和自动重定向/刷新,以便页面可以将用户发送到登录屏幕。

标签: php session symfony


【解决方案1】:

该指南只会在您向服务器发出另一个请求后将您注销。这意味着您当前所在的页面可以永远保持打开状态。

在给定时间后强制向服务器发出请求是很容易的。在您的模板中,您可以添加元刷新:

<meta http-equiv="refresh" content="300">

将它放在 html 的标题部分将在 5 分钟后重新加载页面。该数字以秒为单位。

然后在 SessionIdleHandler 类中,您只需将响应更改为重定向到您想要的位置。

来自:

$event->setResponse(new RedirectResponse($this->router->generate('fos_user_security_login')));

到:

$event->setResponse(new RedirectResponse($this->router->generate('my_bundle.my_route')));

【讨论】:

  • 您也可以使用$response-&gt;headers-&gt;set('Refresh', 300); 代替meta http-equiv 标签。这样,逻辑就在控制器而不是视图中。
  • 非常正确。 IMO 很难追踪到那一点点代码的来源,但它会起作用。
  • 在哪里设置 $response->headers->set('Refresh', 300);因为这需要适用于每一个动作。也许元标记是更好的选择?
猜你喜欢
  • 2013-06-08
  • 2013-01-04
  • 2010-11-03
  • 2012-07-29
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 1970-01-01
相关资源
最近更新 更多