laravel 4只允许登录用户浏览该网站

问题描述:

我只需要允许登录用户浏览该网站。处理过滤器后,我遇到的唯一解决方案是组过滤器。但是,我有很多uri,并且进行组过滤将会很耗时。laravel 4只允许登录用户浏览该网站

我已经试过检查,如果用户登录或没有在filters.php应用: 之前,但它会产生“网页有重定向循环”

 App::before(function($request) 
{ 
    if(Auth::guest()) 
    { 
     return Redirect::guest('login'); 
    } 
}); 

我需要只允许登录用户查看网站的页面,否则将其重定向到登录页面。

您的登录过滤器位于全局过滤器中。所以,该过滤器也会在登录路由之前检查。如果你不想使用组过滤器,只要确保请求的uri与全局过滤器上的uri不同就可以防止重定向循环。

App::before(function($request) 
{ 
    if(Auth::guest() && $request->path() != 'login') 
    { 
     return Redirect::guest('login'); 
    } 
}); 

实现你app/filters.php

Route::filter('auth', function() 
{ 
    if (Auth::guest()) 
     return Redirect::guest('login'); 
}); 

Route::filter('auth.basic', function() 
{ 
    return Auth::basic(); 
}); 

Route::filter('guest', function() 
{ 
    if (Auth::check()) return Redirect::to('/'); 
    else 
     return Redirect::to('login'); 
}); 

所以你看我定义过滤器验证,并检查了客人,以防止非法访问,并将其重定向到登录后,这一点,我们会告诉路由器使用这些过滤器,route.php

Route::any('myRestrictedArea', array('before' => 'auth', 'uses' => '[email protected]', 'as' => 'user.myRestrictedArea')); 

现在只有通过认证的用户都能够达到限制页。