2017-01-25 94 views
9

我用生成器生成一個簡單的策略:爲什麼策略能力方法不會被調用?

php artisan make:policy TeamPolicy 

而且,我已經在AuthServiceProvider把它註冊爲:

protected $policies = [ 
     Team::class => TeamPolicy::class, 
    ]; 

我試圖把它稱之爲在TeamsController爲:

$this->authorize('update', $team); 

這是我的政策檔案Policies\TeamPolicy.php as:

<?php 
namespace App\Policies; 
use App\Team; 
use Illuminate\Auth\Access\HandlesAuthorization; 
class TeamPolicy 
{ 
    use HandlesAuthorization; 
    /** 
    * Create a new policy instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     // 
    } 
    public function update(Team $team) 
    { 
     App:debug("Policy update called!"); 
     return true; 
    } 
} 

然而,在政策的更新方法不會被調用,並呼籲$this->authorize('update', $team);

請告知,當我得到錯誤403!

+0

您的teamcontroler的外觀如何? – Kasnady

+0

我的TeamsController看起來像其他任何常規控制器。它有許多方法,包括編輯和更新方法,其中包含調用'$ this-> authorize('update',$ team);'輸出上述錯誤。遺憾的是,我無法與任何人分享控制器的細節,它是保密的。 – WingsOfAltair

回答

2

策略方法的第一個參數應該是檢查授權的用戶。嘗試改爲:

public function update(User $user, Team $team) 
{ 
    //... 
} 
+0

這不能解決任何問題。 – WingsOfAltair

+0

@ user7409342你確定'$ team'變量是'Team'類的一個實例嗎?你最近怎麼樣? – alepeino

+0

我正在從'app/Team.php'中的Team類實例化$ team對象。 – WingsOfAltair

相關問題