2017-01-25 1 views
9

나는 간단한 정책을 생성하는 발전기를 사용했다 :정책 기능 메서드가 호출되지 않는 이유는 무엇입니까?

php artisan make:policy TeamPolicy 

을, 나는대로 AuthServiceProvider에 그것을 등록 :

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

나는에 전화를 시도 TeamsController로 :

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

여기 내 정책 파일 Policies\TeamPolicy.php은 다음과 같습니다.

(210) 는
<?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

팀 제어 기는 어떻게 생겼습니까? – Kasnady

+0

My TeamsController는 다른 일반 컨트롤러와 비슷합니다. 그것은'$ this-> authorize ('update', $ team);라는 호출을 포함하는 편집 및 업데이트 메소드를 포함하는 많은 메소드를 가지고 있는데, 위에서 언급 한 에러를 출력합니다. 불행히도, 컨트롤러의 특성을 다음과 같이 다른 사람들과 공유 할 수는 없습니다. 그것은 기밀입니다. – WingsOfAltair

답변

2

Policy 메소드의 첫 번째 인수는 권한 부여를 확인하는 사용자 여야합니다. 대신 다음을 시도하십시오.

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

아무 것도 수정하지 않습니다. – WingsOfAltair

+0

@ user7409342'$ team' 변수가'Team' 클래스의 인스턴스입니까? 어떻게 지내니? – alepeino

+0

'app/Team.php'에있는 Team 클래스에서 $ team 객체를 인스턴스화하려고합니다. – WingsOfAltair

관련 문제