2017-01-25 10 views
9

私は、単純なポリシーを生成するために発電機を使用していますポリシー能力メソッドが呼び出されないのはなぜですか?

:私のように TeamsControllerでそれを呼び出そうとしました

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

php artisan make:policy TeamPolicy 

をそして、私のようにAuthServiceProviderでそれを登録しています

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

私のポリシーファイルPolicies\TeamPolicy.phpは次のとおりです。

<?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; 
    } 
} 

しかし、政策のupdateメソッドが呼び出されていない、と$this->authorize('update', $team);

を呼び出すときに、私はお知らせくださいエラー403を得るん!

+0

あなたのチームコントロールはどのように見えますか? – Kasnady

+0

My 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

関連する問題