加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 即使使用AllowAnonymous,SimpleMembership密码重

发布时间:2020-12-16 03:22:34 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试将我的MVC4应用程序从ASP.NET成员资格迁移到新的SimpleMembership,并且遇到了密码重置问题.在我的登录视图中,我有“忘记密码”超链接,它发送一个 AJAX帖子到一个动作,发送一个带有重置密码超链接的电子邮件(基于 MSDN guidelines松散): [HttpPost
我正在尝试将我的MVC4应用程序从ASP.NET成员资格迁移到新的SimpleMembership,并且遇到了密码重置问题.在我的登录视图中,我有“忘记密码”超链接,它发送一个 AJAX帖子到一个动作,发送一个带有重置密码超链接的电子邮件(基于 MSDN guidelines松散):

[HttpPost]
[AllowAnonymous]
public ActionResult ForgotPassword(string userName)
{
    //get the user from database,validate it exists,etc.
    var token = WebSecurity.GeneratePasswordResetToken(userName);
    var resetLink = "<a href='" + Url.Action("ResetPassword","Account",new {un = userName,rt = token},"http") + "'>Reset Password</a>";
    //send the email
    return Json(new {result = "Email sent."});
}

这很好,但出于某种原因,当我尝试使用重置密码链接时,我被重定向到登录屏幕,Fiddler显示401-Unauthorized.我已经尝试将链接复制/粘贴到浏览器地址栏中,并创建一个带有锚标记的垃圾HTML文件,但结果仍然是401.这是重置密码操作(也在来自的帐户控制器中) MVC4模板):

[HttpPost]
[AllowAnonymous]
public ActionResult ResetPassword(string un,string rt)
{
    var model = new ResetPasswordViewModel {UserName = un,ResetToken = rt};
    return View(model);
}

我也尝试删除HttpPost属性,但这也产生了401.我在这里缺少什么?

UPDATE
感谢Steve的评论,我完全限定了HttpPost属性,现在已经意识到它正在尝试发布到一个区域而不是直接发布到根帐户控制器.使用RouteDebugger,我看到资源未找到错误:

Matched Route: {controller}/{action}/{id}
Generated URL: /SiteRoot/Reports/Account/ResetPassword?un=whatever&rt=removedForSecurity using the route "Reports/{controller}/{action}/{id}"

请注意,它正在查看“报告”区域.因此,我在ForgotPassword操作中更改了我的锚标记构造,在路由值对象中添加了Area规范,如下所示:

var resetLink = "<a href='" + Url.Action("ResetPassword",rt = token,Area = ""},"http") + "'>Reset Password</a>";

但它仍在尝试使用“报告”区域.如何确保电子邮件中的锚标记将指向站点根目录而不是区域?

更新2
我删除了HttpPost属性,现在正在获取原始的401重定向.

更新3
ResetPassword视图代码:

@model Whatever.Web.Models.ResetPasswordViewModel
@{
    ViewBag.Title = "Reset Password";
}
@using (Html.BeginForm())
{
    <fieldset>
        <legend>Reset Password</legend>
        <table>
            <tr>
                <td>User name:</td>
                <td>@Html.TextBoxFor(m => m.UserName,new { @class="disabled-textbox",@readonly="readonly",autocomplete="off" })</td>
                <td></td>
            </tr>
            <tr>
                <td>New Password:</td>
                <td>@Html.PasswordFor(m => m.NewPassword,new { id = "resetPasswordNewPassword" })</td>
                <td></td>
            </tr>
            <tr>
                <td>Confirm New Password:</td>
                <td>@Html.Password("resetPasswordConfirmPassword","",new { id = "resetPasswordConfirmPassword"})</td>
                <td>
                    <div id="passwordsMatch"></div>
                </td>
            </tr>
        </table>
        <input type="submit" id="submitButton" value="Submit" disabled="disabled"/>
        <div id="resetPasswordResultDiv"></div>
    </fieldset>
}
<script type="text/javascript">
    $(document).ready(function() {
        $("#resetPasswordNewPassword,#resetPasswordConfirmPassword").keyup(function() {
            if ($("#resetPasswordNewPassword").val().length > 0 && $("#resetPasswordConfirmPassword").val().length > 0 && $("#resetPasswordNewPassword").val() != $("#resetPasswordConfirmPassword").val()) {
                if ($("#resetPasswordNewPassword").val() != $("#resetPasswordConfirmPassword").val()) {
                    $("#passwordsMatch").html('<span style="color: red; font-weight: bold;>Passwords do not match</span>');
                    $("#submitButton").attr('disabled',true);
                } else {
                    $("#submitButton").removeAttr('disabled');
                }
            } else {
                $("#passwordsMatch").html('');
                $("#submitButton").attr('disabled',true);
            }
        });
    });
</script>

更新4
我尝试向Account控制器添加另一个操作方法,从而产生“hello world”样式视图.当然,添加了[AllowAnonymous]属性.此方法还会导致401重定向登录.

解决方法

我没有看到你设置这种方式的任何问题.这里还有其他事情要发生.检查您的_Layout.cshmtl文件,并确保您没有任何可能导致401的其他操作的调用.

这个人有类似的问题:https://stackoverflow.com/a/11046666/199913

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读