ERR_TOO_MANY_REDIRECTS +重定向匿名用户时

时间:2014-04-03 13:20:01

标签: php symfony redirect silex

我正在使用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。但我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

创建一个控制器来检查您是否在登录页面上。如果不是 - >重定向到登录页面。

if ($app['security']->isGranted('IS_AUTHENTICATED_ANONYMOUSLY')) {
    $routeName = $request->get('_route');
    if($routeName != 'user.login')
    {
        return $app->redirect('/');
    }
}