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