사용자가 Laravel 5.4에서 자신의 프로필을 볼 수있게하려고합니다. AuthServiceProvider.php에Laravel 정책은 항상 거짓입니다.
UserPolicy.php
public function view(User $authUser, $user)
{
return true;
}
등록 정책
protected $policies = [
App\Task::class => App\Policies\TaskPolicy::class,
App\User::class => App\Policies\UserPolicy::class
];
경로
Route::group(['middleware' => 'auth'], function() {
Route::resource('user', 'UserController');
});
블레이드 템플릿
@can ('view', $user)
// yes
@else
// no
@endcan
UserController.php
public function profile()
{
return $this->show(Auth::user()->id);
}
public function show($id)
{
$user = User::find($id);
return view('user.show', array('user'=>$user,'data'=>$this->data));
}
반환은 '거짓'항상. 컨트롤러에서 정책 양식을 호출하는 것과 같습니다. 어디서 잘못 나니?
답장을 보내 주셔서 감사합니다. 아마도 내 매개 변수 이름이 오해의 소지가 있었을 것입니다. 죄송합니다. 내가 원했던 것은 '인증 된 사용자'를 첫 번째 매개 변수로 전달하고 사용자를 두 번째 매개 변수로 전달하는 것입니다. 나는 나의 컨트롤러에서'$ user'를 패스 한 것을 보여주기 위해 나의 대답''@can ('view', $ user)'에 같은 변수 이름을 사용했다. '$ user' (이전에'$ subject'라고 부름)는 볼 사용자입니다. – sr9yar