0

我需要能够给用户一个指向我的站点的链接,该链接带有一个参数,可以控制他们在目标页面上的体验,但是,当然,Moqui 不允许将参数作为 GET 事务传递。有什么方法可以解决这个问题?它必须是可以通过电子邮件、短信和声音发送的东西。

4

1 回答 1

0

错误消息将有助于准确了解您遇到的情况,但这听起来像是缓解 XSRF 攻击的约束。

这种情况的错误消息解释了问题和推荐的解决方案:“出于安全原因,无法使用来自非安全请求的操作或使用 URL 参数运行屏幕转换(它们未加密,需要用于数据保护和源验证)。将来自该链接的链接更改为带有隐藏输入字段的表单。”

您可以将 URL 参数传递给屏幕以用于准备数据以供呈现的代码,但不能传递给处理输入的代码的转换。解决方案是使用带有链接或按钮的隐藏表单来提交表单(可以将其设置为链接或按钮,或者您想要的任何样式)。与带有 URL 参数的普通超链接相比,这比 HTML 略多一些,但不多,而且 Moqui 本身的各个地方都有示例。

如果您使用的是 XML 屏幕/表单,您可以使用链接元素来执行此操作,并将 @link-type 属性设置为“hidden-form”或“hidden-form-link”(它只使用超链接样式的小部件而不是一个按钮样式的)。如果@link-type 属性设置为“auto”(这是默认值),如果链接转到带有操作的转换,它将自动使用隐藏表单。

在纯 HTML 中,一种可能的方法如下所示:

<button type="submit" form="UserGroupMemberList_removeLink_0">Remove</button>

<form method="post" action=".../EditUserGroups/removeGroup" name="UserGroupMemberList_removeLink_0">
    <input type="hidden" name="partyId" value="EX_JOHN_DOE">
    <input type="hidden" name="userGroupId" value="ADMIN">
</form>

请注意,按钮元素是指要提交的表单,因此可以放置在 HTML 文件中的任何位置,并且表单元素可以放置在末尾或不碍事的任何位置(以避免出现不允许的嵌套表单问题在 HTML 中)。

于 2014-02-13T20:12:05.900 回答