GraphQL 和 Laravel 如何进行授权?

Posted

技术标签:

【中文标题】GraphQL 和 Laravel 如何进行授权?【英文标题】:How do authorization with GraphQL and Laravel? 【发布时间】:2017-11-22 18:05:25 【问题描述】:

我正在考虑在我的项目中应用 GraphQL 的可能性,该项目基于 Laravel 5.4。现在我用的是REST API,授权没有问题(I use Fractal):我按照角色和权限将数据集返回给用户,这符合应用的业务逻辑。

现在想用GraphQL,但是不明白嵌入业务逻辑和授权的机制,这样就可以返回一组数据,具体取决于请求数据的用户的权限。

请告诉我,如何做到这一点?将 GraphQL 集成到 Laravel 框架中是否有更好的实践?

【问题讨论】:

我刚刚在这里回答了一个类似的问题:***.com/questions/44641553/…。让我知道这是否能解决您的问题 【参考方案1】:

如果您打算使用this 包,您可以轻松做到这一点。

例如,像这样定义多个方案: https://github.com/Folkloreatelier/laravel-graphql#schemas

然后在你的 routes/web.php 文件中定义

Route::get('/graphql/secret', ['middleware' => ['api:auth']], function () 

);

可以通过如下路径访问公共数据: http://your.domain/graphql?query=query+FetchUsersusersname

可以通过如下路径访问受保护的数据: http://your.domain/graphql/secret?query=query+FetchUsersusersid,email,name

【讨论】:

以上是关于GraphQL 和 Laravel 如何进行授权?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django GraphQL JWT 和 Graphene Relay 进行身份验证和授权

在 Nestjs 中使用 graphql 进行授权

Laravel 灯塔无法在用户模型上使用授权

graphql 基于角色的授权

如何在不使用公用文件夹和 php artisan 的情况下在 laravel graphql-playground 中加载 schema.graphql

使用 cognito 进行 Appsync graphql 授权