[英]Laravel base controller method to call a filter
使用Laravel 3時遇到問題,我需要使用此laravel版本,因為這是我公司中laravel的認證版本。
因此,我想在base_controller內實現一個受保護的方法,以在所有控制器中使用此方法。
然后,我實現了以下代碼:
protected function verifyLoggedUser( $module, $action ) {
$result = false;
//logical to validate user permissions
if( !$result )
return $this->filter('before', 'profileValidate');
else
return $result;
}
在我的控制器內部,我調用此方法來驗證記錄的用戶權限,然后,當權限為false時,我需要基本控制器調用過濾器profileValidate,該過濾器會將用戶重定向到某些路由。
我實現日志結果的這種方式是:
Laravel\Routing\Filter_Collection Object (
[filters] => Array ( [0] => profileValidate ) [parameters] => [only] => Array ( )
[except] => Array ( ) [methods] => Array ( ) )
在我的過濾器內部,我有一個重定向到某條路由,但沒有用,也沒有顯示任何錯誤!
在實施開始時,我嘗試將用戶重定向到基本控制器內的某個頁面,但不起作用,因為要正常工作,我還需要在父控制器中返回一個值,這是一個問題,因為此驗證必須在我的方法實現的開始進行,返回必須在方法的結束進行。
你能幫我嗎? 謝謝!
您可以在傳遞參數的路由上直接使用過濾器進行過濾,設置角色或角色有權訪問此部分,如下所示:
Route::group(array('before' => 'verifyLoggedUser:admin,action'), function()
{
Route::get('panel', 'someController@action');
Route::get('dashboard','someController@otherAction');
});
過濾器可以通過以下方式獲取此參數:
Route::filter('filter', function($route, $request, $module, $action)
{
$result = false;
//logical to validate user permissions
if( !$result )
return $this->filter('before', 'profileValidate');
else
return $result;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.