【发布时间】:2014-04-03 13:20:00
【问题描述】:
我正在使用 Silex(基于 Symfony2 的微框架)。
当会话过期(例如 2 小时没有活动)并且我刷新页面时,我总是收到错误消息,即他在 null 属性上找不到属性 displayName。因为在我的布局视图中,我有:{{ app.user.displayName }}。 (这是合乎逻辑的)
现在我想在用户未登录时重定向到登录页面。我在$app->之前这样做:
$app->before(function (Request $request) use($app) {
if ($request->getMethod() === "OPTIONS") {
$response = new Response();
$response->headers->set("Access-Control-Allow-Origin","*");
$response->headers->set("Access-Control-Allow-Methods","GET,POST,PUT,DELETE,OPTIONS");
$response->headers->set("Access-Control-Allow-Headers","Content-Type");
$response->headers->set("Access-Control-Expose-Headers","handshake");
$response->setStatusCode(200);
$response->send();
}
if ($app['security']->isGranted('IS_AUTHENTICATED_ANONYMOUSLY')) {
return $app->redirect('/login');
}
});
但是当我这样做时,我总是得到错误:ERR_TOO_MANY_REDIRECTS。但是我该如何解决这个问题?
【问题讨论】:
-
我不太了解 Silex 的工作原理,但如果所有请求都调用了
$app->before(),那么它也会调用/login,并且由于不存在会话,@987654326 @ 进入重定向循环回到自身。您能否使用 Silex 推荐的任何方法将return $app->redirect('/login')包装在不针对/loginURI 执行的条件中? -
谢谢!检查是否在登录页面上!
-
你应该在下面发布自己的解决方案作为答案。
标签: php symfony redirect silex