2014-04-22 79 views
0

我只需要允許登錄用戶瀏覽該網站。處理過濾器後,我遇到的唯一解決方案是組過濾器。但是,我有很多uri,並且進行組過濾將會很耗時。laravel 4只允許登錄用戶瀏覽該網站

我已經試過檢查,如果用戶登錄或沒有在filters.php應用: 之前,但它會產生「網頁有重定向循環」

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

我需要只允許登錄用戶查看網站的頁面,否則將其重定向到登錄頁面。

回答

2

您的登錄過濾器位於全局過濾器中。所以,該過濾器也會在登錄路由之前檢查。如果你不想使用組過濾器,只要確保請求的uri與全局過濾器上的uri不同就可以防止重定向循環。

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

所以你看我定義過濾器驗證,並檢查了客人,以防止非法訪問,並將其重定向到登錄後,這一點,我們會告訴路由器使用這些過濾器,route.php

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

現在只有通過認證的用戶都能夠達到限制頁。

相關問題