用户授权

未匹配的标注
本文档最新版为 6.x,旧版本可能放弃维护,推荐阅读最新版!

用户授权

简介

除了内置的 认证服务 外, 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-pst', $post)) {
    //
}

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

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

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

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

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/lumen/5.5/user-...

译文地址:https://learnku.com/docs/lumen/5.5/user-...

上一篇 下一篇
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
贡献者:3
讨论数量: 0
发起讨论 只看当前版本


暂无话题~