我有一个应用程序用户的编辑视图,用户可以从中更改其详细信息。该视图包含用户名,电子邮件,旧密码和新密码。因为,用户输入旧密码我想用ajax检查数据库是否用户输入了正确的旧密码?如果旧密码正确,那么我将启用新密码,否则我需要向用户显示密码不正确的消息。我怎样才能做到这一点?有没有远程方法可以做到?
查看模型
[DataType(DataType.Password)]
[Display(Name = "Old password")]
public string OldPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
public string NewPasswordCompare { get; set; }
Ajax代码
<script>
$(document).ready(function () {
$("#Verify").click(function () {
var oldPassword = $('#Password').val();
$.ajax({
type: "GET",
url: "@Url.Action("GetPassword")",
data: {'id':@Model.Id, 'password': oldPassword},
datatype: "JSON",
success: function (data) {
if (data) {
console.log("Working");
}
}
});
});
});
</script>
控制器
public JsonResult GetPassword(string id, string password)
{
using (var db = new ApplicationDbContext())
{
var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
var user = UserManager.FindById(id);
if (UserManager.CheckPassword(user, password))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
else
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
Ajax请求不起作用。
答案 0 :(得分:1)
使用此:
using (var db = new ApplicationDbContext())
{
var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
var user = UserManager.FindById(id);
if (UserManager.CheckPassword(user, password))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
else
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}