如何解决即使该URL包含ASP.NET MVC上的验证密钥信息,也不会加载“重置密码”视图
首先,我也在这里检查了其他解决方案,但这似乎并不能解决我的问题。 问题是,一切正常。如果用户单击“忘记密码”并输入其用户名。他会收到一封带有重置密码链接的电子邮件。现在,如果他单击该URL,则将其定向到该URL,但未加载resetpassword页面,而是正在加载另一个条件,即HttpNotFound()页面。迫切需要知道我的代码出了什么问题。
这是我的ForgotPassword操作
[HttpPost]
public ActionResult ForgotPassword(string username)
{
string message = "";
using (MBNSystemEntities db = new MBNSystemEntities())
{
var userdetails = db.Users.Where(x => x.UserName == username).FirstOrDefault();
if (userdetails != null)
{
string validationKey = Guid.NewGuid().ToString().Substring(0,8);
string validationPin = Guid.NewGuid().ToString().Substring(0,4);
SendMail(userdetails.Email,validationKey,"ResetPassword");
UserValidationRequest uvr = new UserValidationRequest();
uvr.UserId = userdetails.UserId;
uvr.ValidationType = 1;
uvr.ValidationExpiryDate = DateTime.Now.AddDays(1);
uvr.ValidationKey = validationKey;
uvr.ValidationPin = validationPin;
uvr.ValidationStatus = 0;
db.UserValidationRequests.Add(uvr);
db.SaveChanges();
message = "Reset Password link has been sent to your email id.";
}
else
{
message = "Account Not Found";
}
}
ViewBag.Message = message;
return View();
}
这是我的ResetPassword操作
public ActionResult ResetPassword(string validationKey)
{
if(string.IsNullOrWhiteSpace(validationKey))
{
return HttpNotFound();
}
using (MBNSystemEntities db = new MBNSystemEntities())
{
var user = db.UserValidationRequests.Where(x => x.ValidationKey == validationKey).FirstOrDefault();
if (user != null)
{
ResetPasswordModel model = new ResetPasswordModel();
model.validationKey = validationKey;
return View(model);
}
else
{
return HttpNotFound();
}
}
}
我通过设置断点进行检查。验证密钥在Forgetpassword(字符串验证密钥)中传递为null,而不是在ForgotPassword操作中生成的实际验证密钥。 这是电子邮件示例:
解决方法
您发送的电子邮件在传递值方面是错误的
localhost:44338/Accounts/ResetPassword?vk={value}
它正在寻找一个名为vk
的参数,但它应该是validationKey
如果您可以将SendEmail
函数更改为添加validationKey
而不是vk
,它将解决您的问题
或
在您的ResetPassword(string validationKey)
中,您可以将名称更改为
ResetPassword(string vk)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。