用户授权

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

用户授权

介绍

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

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

不同于 Laravel

定义权限

在 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 来检查权限,在 Lumen 中,你需要启用 bootstrap/app.php 中对 facade 的使用。请记住,我们不需要对 allows 方法进行用户实例的传参,认证过的用户会自动传参到用户授权的回调中:

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

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

当然,你也可以检查 User 实例是否有某些权限:

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

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

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

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
发起讨论 查看所有版本


暂无话题~