Laravel 8 策略方法
一旦注册了策略,您可以为它授权的每个操作添加方法。例如,让我们在 PostPolicy
上定义一个 update
方法,它确定给定的 User
是否可以更新给定的 Post
实例。
update
方法将接收一个 User
和一个 Post
实例作为参数,并应返回 true
或 false
,指示用户是否被授权更新给定的 Post
。所以,在这个例子中,让我们验证用户的 id
是否与帖子上的 user_id
匹配:
<?php
namespace App\Policies;
use App\Models\Post;
use App\Models\User;
class PostPolicy
{
/**
* 确定用户是否可以更新给定的帖子
*
* @param \App\Models\User $user
* @param \App\Models\Post $post
* @return bool
*/
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
}
您可以根据策略授权的各种操作的需要,继续在策略上定义其他方法。例如,您可以定义 view
或 delete
方法来授权各种 Post
操作,但请记住,您可以自由地为策略方法指定任何名称。
技巧:如果您在通过 Artisan 控制台生成策略时使用了
--model
选项,那么它已经包含了viewAny
、view
、create
、update
、delete
、restore
和forceDelete
操作的方法。