Я использую базовую систему политик laravel для защиты неавторизованного пользователя от поста обновления.Например, у пользователя есть Id 1 и In posts. Таблица User_id также равна 1.
Теперь $this->authorize('update',$post);
способом я могу передать только одну переменную $post
для аутентификации.в то время как в методе can
я также могу использовать $user
переменную $user->can('update',$post)
для авторизации.
Вот код:
В PostPolicy.php:
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
В AuthServiceProvider.php:
protected $policies = [
Post::class => PostPolicy::class
]
В контроллере Авторизовать путь:
public function update(Request $request, $id)
{
$post=Post::find(1);
$user=User::find(1);
$this->authorize('update',$post);
return 'Hello Everything Access For You ';
}
Использование метода can в контроллере:
public function update(Request $request, $id)
{
$post=Post::find(1);
$user=User::find(1);
if($user->can('update',$post)){
return 'Your are allowed';
}
else
{
return 'Your are Not allowed';
}
}
Прав ли я для этих двух функций.Есть ли разница?Какой метод я должен использовать.Заранее спасибо.