步骤
定义策略类
注册策略类和模型关联
策略判断
定义一个文章post的policy
/app/Policies
下会生产PostPolicy.php
文件
php artisan make:policy PostPolicy
定义文章的
update
修改权限与delete
删除权限
class PostPolicy
{
use HandlesAuthorization;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct()
{
//
}
// 修改权限
public function update(User $user,Post $post){
return $user->id == $post->user_id;
}
// 删除权限
public function delete(User $user,Post $post){
return $user->id == $post->user_id;
}
}
注册策略类
找到app/Providers/AuthServiceProvider.php
,将Post
模型注册到PostPolicy
protected $policies = [
'App\Post' => 'App\Policies\PostPolicy',
];
策略判断
下面是3种判断的方法
普通使用
if($user->can('update',$post)){
//
}
或
if($user->can('update', Post::class)){
//
}
Blade模板里使用
@can('update',$post)
@elsecan('delete',$post)
@endcan
控制器使用
$this-authorize('update',$post);
或
$this->authorize('update', Post::class);
网友评论