Orchardcms 果园';s丢失密码返回302并重定向

Orchardcms 果园';s丢失密码返回302并重定向,orchardcms,orchardcms-1.8,Orchardcms,Orchardcms 1.8,我们在Orchard.Users中尝试在帐户控制器上发布丢失密码操作时遇到一些奇怪的行为 重要细节 我们不是直接使用Orchard源代码,而是使用已编译的可重新分发的模块,并构建部署到redist主机的模块,因此直接调试是一项挑战 我们已经在vanilla Orchard 1.8.1(redist的版本)中尝试了这一点,因此我们几乎可以删除模块的任何代码 在发布表单时,我们会收到一个302 Moved响应,其位置标题设置为/。然后,它会返回到root,而不是成功页面或返回到输入新的详细信息密码

我们在Orchard.Users中尝试在帐户控制器上发布丢失密码操作时遇到一些奇怪的行为

重要细节

  • 我们不是直接使用Orchard源代码,而是使用已编译的可重新分发的模块,并构建部署到redist主机的模块,因此直接调试是一项挑战
  • 我们已经在vanilla Orchard 1.8.1(redist的版本)中尝试了这一点,因此我们几乎可以删除模块的任何代码
  • 在发布表单时,我们会收到一个302 Moved响应,其位置标题设置为/。然后,它会返回到root,而不是成功页面或返回到输入新的详细信息密码。未成功更改用户的密码
  • 查看源代码中的帐户控制器可以发现,唯一明确返回root的结果是调用IUserService.ValidateLostPassword(nonce)失败并且返回重定向(“~/”)时;被称为
  • 由于直接调试有点复杂,我们从源代码中获取了控制器的副本,并将操作代码和所有相关的服务调用逻辑移动到Orchard命令中进行测试。这已成功更改用户的密码。并使用从重置电子邮件捕获的NOnce无误返回
因此,我们怀疑这可能是Orchard本身的一个bug,尽管更可能是我们的实例的bug,并且它的配置被视为“无法更改密码”是一个非常广泛的问题

有人有什么建议吗?可能适用的已知错误

更新1:

谢谢你,伯特兰。我们还没有在Orchard 1.9上尝试过,但成功地获得了一个完全干净的1.8版本(因为这是我们目前在野外使用的一个回购版本。P.S.你知道你的分支是1.4.x,1.5.x,1.9.x吗?没有1.8.x可用。无论如何),这是有效的。简短的版本:我们玩弄了可能不同的东西,我们把它归结为当我们的主题关闭时有效,当它打开时无效

一点挖掘表明,我们的FE人员已覆盖丢失密码视图,以匹配我们的业务外观。以下是我的发现:

在默认的Orchard视图中,使用以下命令启动表单:

@using (Html.BeginFormAntiForgeryPost()) { 
最后看起来像

<form action="/OrchardLocal/Users/Account/LostPassword?nonce=Vc7ABvKcwfMO0jrRkJFxiBWoJzbdGAqQ7bbEgGySqlyAAKnHPTIkyhzG8nn%2FXJsqKkh6e9sreTnHx223BKFOs17gY%2FDWMggtCZw%2BSfz194Mviua5smhl5d%2FnACXCI%2BrdQaGcJj%2BjvoFE7m2OIiaX8w%3D%3D" method="post">
在这里,我们为主题的需要指定了一些额外的类,并在页面上显示:

<form action="/Users/Account/LostPassword" class="form-lost-password" method="post">
Url.Action()的形式,将其指定为路由值

但是,nonce既不会作为模型上的成员传递,也不会通过ViewBag传递(就像最小密码长度一样)

我在Orchard 1.6/1.7的时候发现了这个问题,它建议更新控制器,将nonce添加到Viewbag中,但我们使用的是Orchard的预编译重新分布,因此这不太适合我们的需要


我将使用我们现有的其他方式编写该表单,而无需更新控制器,但是否有任何计划使nonce可供此视图使用?

是否尝试使用源代码复制?有更新的版本吗?SSL打开了吗?更新1添加到原始问题中没有1.8.x分支,因为1.8下没有新版本的持续开发。1.4.x和1.5.x不应存在。是否尝试将nonce参数添加到操作参数中,从请求中获取其值?否,因为我们使用的不是Orchard的源版本,而是预编译的redist。我们试图避免对Orchard代码库进行任何定制,只使用香草版本,这样我们就不会与每个新版本重新集成。特别是最近推出的1.9版本。我们可以从HttpContext来理解它,但这对我们来说似乎非常严厉。有没有特别的原因使NOnce不能用于LostPassword表单?它在查询参数中,所以它没有看到它需要隐藏或其他任何东西。您是否尝试用源代码复制它?有更新的版本吗?SSL打开了吗?更新1添加到原始问题中没有1.8.x分支,因为1.8下没有新版本的持续开发。1.4.x和1.5.x不应存在。是否尝试将nonce参数添加到操作参数中,从请求中获取其值?否,因为我们使用的不是Orchard的源版本,而是预编译的redist。我们试图避免对Orchard代码库进行任何定制,只使用香草版本,这样我们就不会与每个新版本重新集成。特别是最近推出的1.9版本。我们可以从HttpContext来理解它,但这对我们来说似乎非常严厉。有没有特别的原因使NOnce不能用于LostPassword表单?它在查询参数中,所以它没有看到它需要隐藏或其他任何东西。您是否尝试用源代码复制它?有更新的版本吗?SSL打开了吗?更新1添加到原始问题中没有1.8.x分支,因为1.8下没有新版本的持续开发。1.4.x和1.5.x不应存在。是否尝试将nonce参数添加到操作参数中,从请求中获取其值?否,因为我们使用的不是Orchard的源版本,而是预编译的redist。我们试图避免对Orchard代码库进行任何定制,只使用香草版本,这样我们就不会与每个新版本重新集成。特别是最近推出的1.9版本。我们可以从HttpContext来理解它,但这对我们来说似乎非常严厉。有没有特别的原因使NOnce不能用于LostPassword表单?它位于查询参数中,因此它不会看到需要隐藏的内容或其他内容。
<form action="/Users/Account/LostPassword" class="form-lost-password" method="post">
Action(String, String, Object)