如何在Symfony中实现用户会话超时后自动重定向?

3

所以你想要重定向而不是注销?并且你希望无论他们进行多少次请求都会发生这种情况?例如,用户在页面上停留了20分钟,然后被重定向? - Chase
我想要实现注销并自动重定向/刷新页面,以便将用户发送到登录界面。 - kratos
1个回答

4

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

在一定时间后强制向服务器发送请求非常容易。您可以在模板中添加一个元标记刷新:

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

将以下代码放入HTML头部部分,页面将在5分钟后重新加载。数字以秒为单位计算。

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

源自:

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

to:

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

2
你也可以使用 $response->headers->set('Refresh', 300); 替代 meta http-equiv 标签。这样,逻辑将在控制器中而非视图中处理。 - Adam Elsodaney
非常正确。在我看来,以后很难追踪那个小代码片段的来源,但它确实可以工作。 - Chase
我应该在哪里设置 $response->headers->set('Refresh', 300);,因为它需要适用于每个操作。也许 meta 标签是更好的选择? - kratos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接