2.10. OAuth 2.0 认证

未匹配的标注

请查看 Authentication 章节,了解怎么配置 OAuth 2.0 provider。

定义路由 Scopes

通过使用 scopes,你可以对你的受保护的 API 拥有更多的控制。scopes 可以被设置在一个分组或一个路由上,使用数组或者管道分隔的字符串。

路由分组 Scopes

$api->version('v1', ['middleware' => 'api.auth', 'scopes' => ['read_user_data', 'write_user_data']], function ($api) {
    // 只有具有 “read_user_data” 权限的令牌才可以访问。
});

指定路由 Scopes

$api->version('v1', ['middleware' => 'api.auth'], function ($api) {
    $api->get('user', ['scopes' => 'read_user_data', function () {
        // 只有具有 “read_user_data” 权限的令牌才可以访问。
    }]);
});

控制器 Scopes

如果你的控制器使用 Dingo\Api\Routing\Helpers trait,那么你可以使用 scopes 方法。

use Dingo\Api\Routing\Helpers;

class UserController extends Controller
{
    use Helpers;

    public function __construct()
    {
        $this->scopes('read_user_data');
    }
}

你可以通过第二个参数作为一个管道分隔的字符串或者数组来定义你想要应用 scopes 的方法。如果你不提供这个方法,scopes 将会应用于所有方法。你也可以使用 exceptonly 数组关键字来应用 scopes 到方法的子集。

use Dingo\Api\Routing\Helpers;

class UserController extends Controller
{
    use Helpers;

    public function __construct()
    {
        // 仅仅应用于 index 方法。
        $this->scopes('read_user_data', 'index');

        // 应用于 store 方法之外的所有方法。
        $this->scopes('read_user_data', ['except' => 'store']);

        // 仅仅应用于 store 方法
        $this->scopes('write_user_data', ['only' => ['store']]);
    }

    public function index()
    {
        //
    }

    public function store()
    {
        //
    }
}

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

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

原文地址:https://learnku.com/docs/dingo-api/2.0.0...

译文地址:https://learnku.com/docs/dingo-api/2.0.0...

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
贡献者:4
讨论数量: 0
发起讨论 只看当前版本


暂无话题~