gpt4 book ai didi

java - Google App Engine 问题上的条纹

转载 作者:行者123 更新时间:2023-11-30 06:33:36 26 4
gpt4 key购买 nike

我在 Google App Engine 应用程序中遇到 Stripes 表单问题。我有一个带有 Stripes 表单标记的 JSP 页面。当我提交表单并且其中一个字段出现验证错误时,Stripes 会向我显示一个带有以下通知的屏幕:

Here's how it is.

Someone (quite possibly the Stripes Dispatcher) needed to get the source page resolution. But no source page was supplied in the request, and unless you override ActionBeanContext.getSourcePageResolution() you're going to need that value. When you use a tag a hidden field called '_sourcePage' is included. If you write your own forms or links that could generate validation errors, you must include a value for this parameter. This can be done by calling request.getServletPath()."

我已经检查了带有表单的页面源,并且隐藏的输入字段 _sourcePage 出现在表单中,这是应该的。该字段的值似乎以某种方式加密。

最佳答案

加密发送到客户端的值(隐藏表单字段等)是 Stripes 的功能之一,也是问题的原因。

要加密和解密值,Stripes 使用一个 key ,该 key 在名为 Stripes.EncryptionKey 的配置属性中指定。此属性没有默认值,因此如果未指定,Stripes 将在每次应用程序已初始化。

这在传统的应用服务器上应该不是问题,而且它可以受到安全性增强的欢迎,因为 key 会不时更改。

另一方面,在 Google App Engine 上,这是一个主要问题。在 GAE 上,不能保证一个用户 session 范围内的后续请求将由具有相同生成 key 的同一应用程序提供服务。App Engine 可以随时决定关闭任何正在运行的应用程序实例,如果下一个请求到来,它将启动另一个实例来为请求提供服务(这称为“冷启动”)。这个新实例将具有新生成的 key 。结果是应用程序将尝试使用与加密时不同的 key 来解密值,当然没有这样做。

在这种情况下,Stripes 会记录一条警告“输入未使用当前加密 key 加密:”并且表现为它试图解密的参数根本不存在(参见 net.sourceforge.stripes.util.CryptoUtil)。在您的情况下,这意味着它表现为 _sourcePage 参数不存在并且这就是为什么在发生验证错误时它会显示“这是这样”屏幕的原因。

因此,如果您在 Google App Engine 上使用 Stripes,您应该为配置属性 Stripes.EncryptionKey 设置一些随机值。

关于java - Google App Engine 问题上的条纹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7778151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com