I need to allow only the logged in user to browse the site. After working on filters the only solution I have come across is group filter. But, I have many uri and having group filter will be time-consuming.

I have tried checking if the user is logged in or not in the filters.php App:before but it generates "web page has a redirect loop"

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

I need to allow only logged in user to view the pages of the site, else redirect them to the login page.

有帮助吗?

解决方案

Your login filter is in global filter. So, That filter also check before login route. If you don't want to use group filter, just make sure request uri is not same login uri on global filter to prevent redirect loop.

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

其他提示

implement your 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');
});

So as you see i define filter for Auth and check out guest to prevent illegal access and redirect it to login after this we would tell the router use these filters , route.php:

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

Now only the authenticated users are able to reach restricted page.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top