簡體   English   中英

Laravel基本控制器方法來調用過濾器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM