[李景山php]每天laravel[038]-laravel 系统服务 --- 授权-1
2017-04-13 10:02
197 查看
Authentication:认证
Authorization:授权
授权是对认证的一种补充。
认证:认证用户是否登录。
授权:授权用户是否有权限。
使用:Illnminate\Auth\Access\Gate 类: AuthServiceProvider :
这个就是中级验证里面的, 用户只能删除自己的 list 列表的功能
翻译:
定义能力:
我们可以在 Illuminate\Auth\Access\Gate 类中定义“能力”,让用户可以很容易的操作一个指定的方法。
这个 AuthServiceProvider 将会关联laravel 服务来方便的定义网页应用的能力。
举个例子:
让我定义“update-post”操作,简单点说就是当前用户执行一个Post模型的操作,需要定义当前用户的ID,跟产生这条数据的ID一样才可以。
代码如下:
可以通过:class Based Abilites;
提前检查:
之后检查
检测Abilites:
通过 Gate Facade 验证进行验证。
这样几个方式:check,allows,denies 方法。
针对于特殊用户的检测:
Authorization:授权
授权是对认证的一种补充。
认证:认证用户是否登录。
授权:授权用户是否有权限。
使用:Illnminate\Auth\Access\Gate 类: AuthServiceProvider :
这个就是中级验证里面的, 用户只能删除自己的 list 列表的功能
翻译:
定义能力:
我们可以在 Illuminate\Auth\Access\Gate 类中定义“能力”,让用户可以很容易的操作一个指定的方法。
这个 AuthServiceProvider 将会关联laravel 服务来方便的定义网页应用的能力。
举个例子:
让我定义“update-post”操作,简单点说就是当前用户执行一个Post模型的操作,需要定义当前用户的ID,跟产生这条数据的ID一样才可以。
代码如下:
public function boot(GateContract $gate){ $this->registerPolicies($gate); $gate->define('update-post',function($user,$post){ return $user->id === $post->user_id; }); }
可以通过:class Based Abilites;
$gate->define('update-post','Class@method');
提前检查:
$gate->before(function($user,$ability){ if($user->isSuperAdmin()){ return true; } });
之后检查
$gate->after(function($user,$ability,$result,$atguments){ });
检测Abilites:
通过 Gate Facade 验证进行验证。
这样几个方式:check,allows,denies 方法。
public function update($id){ $post = Post::findOrFail($id); if(Gate::denies('update-post',$post)){ abort(403); } }
针对于特殊用户的检测:
if(Gate::forUser($user)->allows('update-poot',$post)){ }
相关文章推荐
- 每天laravel[038]-laravel 系统服务 --- 授权
- [李景山php]每天laravel[036]-laravel 系统服务 --- 认证-1
- [李景山php]每天laravel[039]-laravel 系统服务 --- 分页
- [李景山php]每天laravel[037]-laravel 系统服务 --- 错误及日志
- [李景山php]每天laravel[031]-laravel 基础知识 --- 服务容器
- [李景山php]每天laravel-20160903|Dispatcher-3
- [李景山php]每天laravel-20160827|McryptEncrypter-1
- [李景山php]每天laravel-20160906|Dispatcher-6
- [李景山php]每天laravel-20160831|EventServiceProvider
- [李景山php]每天laravel-20160826|EncryptionServiceProvider
- [李景山php]每天laravel-20160826|EncryptionServiceProvider
- [李景山php]每天laravel-20160901|Dispatcher-1
- [李景山php]每天laravel-20160903|Dispatcher-3
- [李景山php]每天laravel-20160829|McryptEncrypter-3
- [李景山php]每天laravel-20160830|CallQueuedHandler
- [李景山php]每天laravel-20160827|McryptEncrypter-1
- [李景山php]每天laravel-20160905|Dispatcher-5
- [李景山php]每天laravel-20160905|Dispatcher-5
- [李景山php]每天laravel-20160907|Dispatcher-7
- [李景山php]每天laravel-20160908|Dispatcher-8