문제

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