小编Sco*_*man的帖子

报告记录验证警告和错误的有效方法?

我有一个Rails项目,就像在大多数应用程序中一样,我们有许多硬性和快速的验证规则,所有对象在持久化之前必须符合这些规则.当然,ActiveModel的Validations是完美的 - 我们使用Rails默认值和我们自己的手动验证的组合.

但是,我们越来越多地反对用例,我们希望提醒用户注意这样的情况:尽管他们的数据在最严格的意义上是无效的,但是他们应该审查哪些元素,但哪些不应该本身可防止记录持久性发生.几个例子,在我的头顶:

  • 已经在所有CAPS中提交了帖子标题,这可能是有效的,但可能不是
  • 一个正文文本比一个建议的单词数量少于或多于x个单词

验证模块是我们如何处理验证错误的一个很好的比喻 - 并且有很多匹配器已经可用 - 理想情况下我希望能够重用该基本代码,但同时生成一组warnings项目errors.这将使我们能够以不同的方式突出显示这些案例,而不是暗示可能违反房屋风格等同于更严重,严格执行的规则.

我查看了诸如activemodel-warnings之类的 gem ,但它们通过改变在验证记录时检查哪些匹配器,相应地扩展或缩小errors集合来工作.类似地,我查看:on了验证的内置参数,看看我是否可以手动滚动,但是所有违规都会在错误集合中结束而不是分离出来.

有没有人尝试过类似的东西?我无法想象我是唯一一个想要实现这一目标的人,但我现在正在画一个空白......

validation ruby-on-rails activemodel

18
推荐指数
2
解决办法
2113
查看次数

参数化的应用程序意图如何在“首屏下方”显示附加参数?

我正在使用App Intents 框架将 App Intents 添加到我的 iOS16 应用程序中。

\n

我想要添加的意图之一是打开应用程序数据库中所有事件的列表视图。应用程序中的视图有许多可用的过滤器,我正在尝试在意图中复制其中一些过滤器。

\n

我有几个已编码为 \xe2\x80\x93 的选项,其中一个AppEnum显示时间范围(过去/未来/所有事件),以及一个出版物选择器(每个事件可以有零个或一个出版物)。

\n

按照 WWDC2022 会议“深入了解应用程序意图”中演示的技术,我已经成功实现了:

\n
struct OpenEventsList: AppIntent {\n    static var title: LocalizedStringResource = "Open Events List"\n    static var openAppWhenRun: Bool = true\n\n    @Parameter(title: "Scope")\n    var scope: TimeScope\n\n    @Parameter(title: "Publication")\n    var publication: PublicationEntity?\n\n    static var parameterSummary: some ParameterSummary {\n        Summary("Open \\(\\.$scope) for \\(\\.$publication)")\n    }\n\n    @MainActor\n    func perform() async throws -> some IntentResult {\n        // implementation omitted\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这会产生一个有效的快捷操作:

\n

已填充参数的快捷操作示例

\n …

ios swift swiftui appintents

9
推荐指数
1
解决办法
2556
查看次数

如何将查询参数传递给Devise的登录页面

我遇到了一个Devise定制问题。

如果用户在单击链接时尚未通过身份验证,则某些电子邮件链接中包含一个查询参数,该参数需要传递给登录URL。例如,如果电子邮件链接为:

http://my.host.com/my/path/1234?x=y&foo=bar
Run Code Online (Sandbox Code Playgroud)

我希望将未经身份验证的用户重定向到

http://my.host.com/login/?foo=bar
Run Code Online (Sandbox Code Playgroud)

即,需要传递一个特定的查询参数-我不在乎登录表单上的其他参数,但是如果必须传递所有查询参数,我可以接受。

我已经搜索过SO和Devise和Warden的文档和资料,但是找不到一种简单的方法。很抱歉,如果我缺少明显的内容。

ruby-on-rails devise

5
推荐指数
1
解决办法
2584
查看次数

Google Cloud API Gateway 端点如何从 Cloud Storage 文件传输数据?

我正在构建一个大型 API,该 API 将使用 Google Cloud API Gateway 将各种端点路由到不同的服务 \xe2\x80\x93,其中一些可能是无服务器云功能,其他将由我们的 Kubernetes 中的 Rails 应用程序提供服务簇等。

\n

我们将选择需要客户端进行未经身份验证访问的信息端点,其中信息几乎不会每隔几个月更改一次 \xe2\x80\x93 。我希望将这些端点的内容写入 Google Cloud Storage(在一个世界无法读取的存储桶中),然后允许 API 网关配置将特定端点指向它们(一个世界可读的存储桶不会) t 满足该项目的安全标准)。

\n

我已经为 API 网关创建了一个自定义服务帐户,并为其指定了相关存储桶的存储对象查看者角色。

\n

但是,在使用该服务帐户创建 API 配置并在 Postman 中请求端点后,我看到的不是我期望的 JSON 输出,而是 Google 登录页面的 HTML。

\n

我的 OpenAPI 配置中的端点定义:

\n
paths:\n  /products:\n    get:\n      x-google-backend:\n        address: https://storage.cloud.google.com/<BUCKET_NAME>/products.json\n      summary: List of products in JSON format\n      operationId: listProductsJson\n      produces:\n        - application/json\n      responses:\n        "200":\n          description: a product list\n          schema:\n            type: array\n            items:\n              $ref: \'#/definitions/Product\'\n
Run Code Online (Sandbox Code Playgroud)\n

这是邮递员的回应:

\n

显示 Google 登录 HTML 的 Postman 屏幕截图

\n …

google-cloud-storage google-cloud-iam google-cloud-api-gateway

5
推荐指数
1
解决办法
1053
查看次数

使用 Nginx/Lua 检测 HTTP 基本用户/密码标头并将其重写为自定义标头

我正在使用一个历史 API,它通过密钥/秘密组合授予访问权限,原始 API 设计者指定的该组合应作为 HTTP 基本身份验证标头中的用户名和密码传递,例如:

curl -u api_key:api_secret http://api.example.com/....
Run Code Online (Sandbox Code Playgroud)

现在我们的 API 客户群正在不断增长,我们希望使用3scale来处理身份验证、速率限制和其他功能。根据 3scale 的说明和建议,我们将在 API 服务器前面使用 Nginx 代理,该代理根据 3scale 的服务进行身份验证以处理所有访问控制系统。

我们将把现有客户的密钥和秘密导出到 3scale 中,并保持两个系统同步。我们需要现有的应用程序继续以现有方式接收密钥和秘密,因为某些返回的数据是特定于客户端的。但是,我需要找到一种方法将 HTTP 基本身份验证请求(3scale 本身不支持作为身份验证方法)转换为重写的自定义标头(它们支持)。

我已经能够使用 3scale 为您配置的 Nginx 和 Lua 配置来设置代理。这允许将其-u key:secret传递到我们的服务器并正确处理。但目前,我需要另外添加相同的身份验证信息作为查询参数或自定义标头,以便 3scale 可以管理访问。我希望我的 Nginx 代理为我处理这个问题,以便用户以预先存在的方式提供一组身份验证详细信息,并且 3scale 也可以获取它。

在我熟悉的语言中,例如 Ruby,我可以解码 HTTP_AUTHORIZATION 标头,挑选出 Base64 编码部分,然后对其进行解码以找到已提供的密钥和秘密组件。但我是 Nginx 新手,不知道如何在 Nginx 中实现相同的目标(我也不知道 3scale 提供的 Lua 脚本是否可以/将成为解决方案的一部分)...

lua http nginx 3scale

3
推荐指数
1
解决办法
3383
查看次数