1.创建策略
通过artisan命令 php arisan make:policy ArticlePolicy
在app/Policies下创建了一个ArticlePolicy.php文件,给授权策略添加destroy方法
(也可定义 show
、destroy
或 addComment
方法来授权 Article 的多种行为。)
public function destroy(Admin $admin,Articles $articles){
return $admin->id === $articles->admin_id;
}
2.绑定模型关系,在AuthServiceProvider里增加一行代码
protected $policies = [
Articles::class => ArticlePolicy::class,
];
3.在ArticleController里使用策略
public function destroy(Request $request,Articles $articles){
$this->authorize('destroy',$articles);
$articles->delete();
return redirect('admin/article')->with('success','删除成功');
}
注意事项:由于laravel默认的验证是user,而我此处用的是后台管理员账户进行操作的,所以需要在auth.php里
将‘guard’ =>'web',改成
'defaults' => [
'guard' => 'admin',
'passwords' => 'users',
],