我正在使用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
。但我该如何解决这个问题呢?
答案 0 :(得分:0)
创建一个控制器来检查您是否在登录页面上。如果不是 - >重定向到登录页面。
if ($app['security']->isGranted('IS_AUTHENTICATED_ANONYMOUSLY')) {
$routeName = $request->get('_route');
if($routeName != 'user.login')
{
return $app->redirect('/');
}
}