前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel 权限控制基础之Gate 和Policy

Laravel 权限控制基础之Gate 和Policy

作者头像
苦咖啡
发布2018-04-28 13:39:35
1.1K0
发布2018-04-28 13:39:35
举报
文章被收录于专栏:我的博客我的博客
代码语言:javascript
复制
policy和Gate
php artisan make:policy PostPolicy –model=Post //特定model
//AuthServiceProvider.php在定义权限
//Gate::define(‘view-post’, ‘ClassName@methodOne’);
Gate::define(‘show-info’, function ($test, $post) {
return $test->owns($post);
});
//user.php
public function owns($post)
{
return $this->id == $post->user_id;
}
//控制器
use Gate;
auth()->loginUsingId(1);
$test = TestModel::findOrFail(1);
//Gate::allows();//判断是否允许
if(Gate::denies(‘show-info’,$test)) {
echo ‘禁止访问’;
} else {
echo ‘允许访问’;
}
//可以用policy替换Gate
//AuthServiceProvider.php
protected $policies = [
‘app\Models\TestModel’ => ‘app\Policies\PostPolicy’,
];
$user = auth()->loginUsingId(1);
$test = TestModel::findOrFail(1);
echo $user->id;
echo $test->user_id;
if ($user->cannot(‘show-info’, $test)) {
echo ‘禁止访问’;
} else {
echo ‘允许访问’;
}
对于Gate来定义和policy替换, 在一个项目中通常两种方式都使用,如果访问控制的逻辑非常简单,且只需用到一个方法,那么直接写成Gate的闭包即可,如果比较复杂,且需要对模型进行多个方法的权限控制,那么就写成policy
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年3月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档