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...

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
贡献者:4
讨论数量: 0
发起讨论 只看当前版本


暂无话题~