用户授权

更新时间: 2019-08-01 16:47

简介

除了内置的 用户认证 服务之外, Lumen 还提供了用户授权和资源访问控制的方案。有很多种方法与辅助函数能帮你处理授权逻辑。

总的来说,Lumen 中的使用和 Laravel 大同小异,我们会在这个文档中指出不同的地方,完整的用户授权文档还需要查阅 Laravel 文档

与 Laravel 的差异

定义权限

与 Laravel 相比,Lumen 的用户授权的不同之处在于如何定义权限。在 Lumen 中,你可以很方便的在你的 AuthServiceProvider 文件中使用 Gate facade 来定义你的权限:

Gate::define('update-post', function ($user, $post) {
    return $user->id === $post->user_id;
});

定义授权策略

和 Laravel 不一样的是,Lumen 的 AuthServiceProvider 中没有 $policies 数组。但是你可以在 AuthServiceProviderboot 方法里使用 Gate facade 来调用 policy 方法:

Gate::policy(Post::class, PostPolicy::class);

更多关于授权策略的信息,请参阅 Laravel 文档

检查权限

你可以像 Laravel 一样使用 Gate facade 来检查权限,首先你要确保你的 bootstrap/app.php 文件开启了 facade。 值得一提的是我们不需要将 User 实例传递给 allows 方法,认证过的用户会自动传参到用户授权的回调中:

if (Gate::allows('update-post', $post)) {
    //
}

if (Gate::denies('update-post', $post)) {
    abort(403);
}

当然你也可以传递 User 实例来检查他的权限:

if ($request->user()->can('update-post', $post)) {
    // 用户拥有更新内容的权限...
}

if ($request->user()->cannot('update-post', $post)) {
    abort(403);
}

查看更多 Laravel 中文文档 信息

C++编程思想(第1卷)

C++编程思想(第1卷)

[美] Bruce Eckel / 刘宗田、袁兆山、潘秋菱 / 机械工业出版社 / 2002-9 / 59.00元

《C++编程思考》第2版与第1版相比,在章节安排上有以下改变。增加了两章:“对象的创建与使用”和“C++中的C”,前者与“对象导言”实际上是第1版“对象的演化”一章的彻底重写,增加了近几年面向对象方法和编程方法的最瓣研究与实践的有效成果,后者的添加使不熟悉C的读者可以直接使用这本书。删去了四章:“输入输出流介绍”、“多重继承”、“异常处理”和“运行时类型识别”,删去的内容属于C++中较复杂的主题,......一起来看看 《C++编程思想(第1卷)》 这本书的介绍吧!

JS 压缩/解压工具

JS 压缩/解压工具

在线压缩/解压 JS 代码

html转js在线工具

html转js在线工具

html转js在线工具

HEX HSV 转换工具

HEX HSV 转换工具

HEX HSV 互换工具