尝试在Orchard.Users中的帐户控制器上发布“丢失密码”操作时,我们遇到了一些奇怪的行为。
重要细节
所以我们怀疑这可能是Orchard本身的一个错误,虽然更可能是我们的实例和它的配置看到"无法更改密码"是一个非常广泛的问题。
有人提出任何建议吗?可能适用的已知错误?
更新1:
谢谢Bertrand。我们还没有尝试使用Orchard 1.9,但确实设法得到一个完全干净的1.8(因为这是我们目前在我们的一个回购中使用的版本.PS你是否知道你的GitHub repo braches去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">
一切都很好,花花公子。我认为因为nonce作为get的查询参数进入,所以在调用默认的Begin Form时通过推理将其保留到帖子中,而不需要任何其他设置。
但是,我们的覆盖当前使用:
@using (Html.BeginFormAntiForgeryPost(Url.Action("LostPassword"), FormMethod.Post, new{ @class="form-lost-password"} ) ) {
在这里,我们为主题的需要和我们获得的页面指定了一些额外的类:
<form action="/Users/Account/LostPassword" class="form-lost-password" method="post">
nonce已经消失(或者更确切地说,因为我们指定了特定的路线,所以没有添加)。所以现成的解决方案是使用
添加随机数Action(String, String, Object)
Url.Action()的形式,将其指定为路线值。
但是,nonce不会作为Model上的成员或ViewBag(如最小密码长度)传递。
我在Orchard 1.6 / 1.7时发现了这个this之前的问题,建议更新控制器以将nonce添加到Viewbag中,但是我们正在使用Orchard的预编译重新设置,因此这个问题更少非常适合我们的需求。
我将使用我们可用的内容编写该表单的其他方式,而无需更新Controller,但有没有计划将nonce用于此视图以供使用?