问题标签 [api-platform.com]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
462 浏览

symfony - 如何在 api-platform.com 上设置授权

我正在尝试使用 api-platform.com 作为我的 API 基础设施。而且我想确保每个用户都可以提取他的 OWN 数据并对他的数据执行操作。

我怎样才能做到这一点?

假设我有一个名为“组织”和“书”的实体。图书属于 book.orgnization_id = organization.id 上的组织。此外,用户实体属于使用相同关系的组织。

如何进行此授权检查?

谢谢!

0 投票
0 回答
707 浏览

php - 带有 GET 参数的 Symfony access_control 正则表达式

我正在尝试使用Symfony access_control (app/config/security.yml) 中的GET参数捕获 url,但我无法找到正确的规则。以下是我的一些尝试:/foo/bar?foobar=123

- { path: ^/foo/bar\?foobar=[0-9]+, roles: [ ROLE_USER ], methods: [ GET ] } - { path: ^/foo/bar(\?)([^=]+)\=[0-9]+, roles: [ ROLE_USER ], methods: [ GET ] } - { path: ^/foo/bar.+=[0-9]+, roles: [ ROLE_USER ], methods: [ GET ] }

我没有想法......所有其他标准access_control规则都可以正常工作,所以我的安全设置主要工作(Symfony 3.2)

任何帮助都会很棒 - 我找不到任何正则表达式GET参数相关的access_control规则示例......

问候!尼克拉斯

0 投票
1 回答
134 浏览

symfony - 更改 FOSUserBundle 和 LexikJWTAuthenticationBundle 中的登录行为

我正在使用FOSUserBundleLexikJWTAuthenticationBundle来访问来自 API 的数据。

用户使用用户名和密码登录。生成一个令牌,然后在每个请求中用作凭据。

是否可以使用其他字段进行登录?

假设我的实体中有另一个属性authCode,我如何告诉这些捆绑包通过用户名和 authCode 或用户名和密码和 authCode 登录?

0 投票
1 回答
181 浏览

api-platform.com - 为招摇文档定义路径

我的API路由是/api/v1。当我使用 JWT 和 FOSUserBundle 时,我希望在 /api-doc/v1 下拥有 swagger doc。有谁知道如何为文档设置不同的路线?

谢谢和最好的

0 投票
1 回答
725 浏览

api-platform.com - 自定义扩展 - CurrentUserExtension,Symfony 错误

我想在我的 API 中创建一个自定义扩展,这要归功于api-platform。我尝试按照有关扩展的文档来做完全相同的事情:获取当前用户拥有的数据。但我有以下错误:

(1/1) FatalThrowableError 类型错误:参数 1 传递给 AppBundle\Doctrine\ORM\Extension\CurrentUserExtension::__construct() 必须实现接口 Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface,没有给出,调用在 /var/www/api/var/cache/dev/appDevDebugProjectContainer.php 第 579 行

我试图删除缓存文件,但我有同样的问题。

我的配置:
symfony/symfony v3.3.10
api-platform/schema-generator:v1.2.0

api_filters.yml :

CurrentUserExtension.php :

配置.yml:

你知道问题出在哪里吗?

0 投票
1 回答
1106 浏览

php - 尝试将额外数据添加到资源响应时出错

我正在尝试向特定资源添加一些额外的数据,因此我遵循了有关装饰序列化程序和添加额外数据的文档,但是当我测试资源时出现此错误:

调用 (...)/vendor/api-platform/core/src/Serializer/AbstractItemNormalizer.php 中的 null 成员函数 normalize(),第 426 行。

我已经为这个错误苦苦挣扎了将近两天,我不知道我是否遗漏了一些细节,或者这不是向资源添加额外数据的正确方法。这是我的资源定义:

这是我的自定义规范器:

这是我的 services.yml 声明:

其他一切都作为一种魅力,config.yml 中的序列化程序启用为{ enable_annotations: true }.

有什么硬仗吗?

在此先感谢 ApiPlatform 的出色工作!

0 投票
1 回答
643 浏览

php - ApiPlatform 没有响应,分页 = false

我有一个使用 API 平台包映射的实体 Localita(有 ~7000 条记录),带有以下注释:

如您所见,我启用了 pagination_client_enabled 功能。所以,如果我通过 GET 请求调用

我获得了前 30 条记录,ok!这很棒!但是,如果我用 pagination=false 调用

我得到空白页而没有任何回应。打开浏览器控制台,我看到一个 500 错误代码,所有日志文件(nginx、symfony、php)中都没有错误。

为什么??

提前谢谢

0 投票
1 回答
1845 浏览

symfony - API 平台 - 从结果中删除密码哈希

我有包含以下属性的用户实体:id、电子邮件、密码......

密码属性是密码哈希,我想从项目和集合操作的 GET 结果中删除它。

对此有任何注释吗?(我试过@ApiProperty (readable=false),但没有成功)

我想我可以通过事件订阅者从结果中删除密码,但我很好奇是否有任何简单的方法来实现它。

0 投票
1 回答
617 浏览

symfony - 如何在 api-platform 中创建保存操作

我正在尝试在我的 symfony 项目中实现一些 api。目前该项目有许多带有标准 crud 的控制器,基于 html 表、表单/验证器等。

我正在寻找 api-platform 项目,该项目可以使标准 rest api 的构建变得非常容易,并且对于 GET 部分,它适合我的必需品。但是对于 POST/PUT/DELETE 部分,它在实体上缝合了一个非常基本的持久化操作,突然在我的项目中,我需要在实体持久化之后执行更多操作。

我已经把文档变红了,我真的很困惑如何做到这一点......我看到了两种可能性:

  • 使用事件系统,为每个实体订阅 POST_WRITE

  • 为实体的每个创建/更新/删除操作创建自定义操作

在这两种情况下,我都会在项目中拥有大量的单个操作或事件订阅者(30/40),而且维护起来真的很不舒服。此外,我可能必须复制控制器中已有的相同代码,以维护旧的表单系统,直到全部以 API 格式重新编写。

关于如何解决这个问题的任何建议?

没有办法使用相同的控制器操作,比如在 FOSRestBundle 中,这样我就可以接收数据,执行各种验证/持久化/额外操作,然后返回由 api-platform 事件管理的结果?

有什么方法可以手动调用 api 平台的某些部分,例如反序列化/序列化、来自标准控制器操作的过滤器和分页?

感谢所有欢呼丹尼尔

0 投票
1 回答
3683 浏览

php - api-platform:自定义操作的安全性

我想知道如何使用 api-platform 保护自定义 itemsOperation,我在文档中找到了以下代码:

但我想做类似的事情:

它有效吗?或者我必须检查特殊操作文件中的用户角色?

在这种情况下,最佳做法是什么?