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

时间:2014-04-22 02:27:23

标签: php laravel-4 before-filter

我只需要允许登录用户浏览网站。在处理过滤器之后,我遇到的唯一解决方案是组过滤器。但是,我有很多uri并且使用组过滤器会非常耗时。

我已尝试检查用户是否已登录filter.php App:之前 但它会生成“网页有重定向循环”

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

实施您的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');
});

因此,当您看到我为Auth定义过滤器并检出guest以阻止非法访问并将其重定向到登录后,我们会告诉路由器使用这些过滤器,route.php

Route::any('myRestrictedArea', array('before' => 'auth',   'uses' => 'UserController@myRestrictedArea',   'as' => 'user.myRestrictedArea'));

现在只有经过身份验证的用户才能访问受限制的页面。