我正在尝试使用密码加密并在asp-mvc中验证来创建一个简单的登录表单。
我有以下登录表单(仅限部分代码):
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "loginForm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
//some fields
...
// password
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
//some fields
...
}
另外,我有以下javascript代码(我知道加密不是最安全的,但这对我来说已经足够了)
$("#loginForm").submit(function (e) {
var pass = $("#Password").val();
var passMD5 = CryptoJS.MD5(pass);
$("#Password").val(passMD5);
});
具有以下属性的C#ViewModel
[Required(ErrorMessage = "Can't leave password field empty")]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
当有人输入密码时,我会对密码进行加密,然后将其发送到服务器,然后计算加密密码的验证。
如何在密码字段上执行某些验证并将错误显示在Html.ValidationMessageFor点?
答案 0 :(得分:0)
如果你想在客户端进行验证本身就意味着尝试调用这两个j以及最新的jquery库..如果任何字段不满足条件意味着它将在客户端本身显示错误消息并且它不会打到服务器端编码..
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js
http://ajax.aspnetcdn.com/ajax/mvc/5.1/jquery.validate.unobtrusive.min.js
答案 1 :(得分:0)
您可以在更改密码之前通过执行以下操作验证表单:
$("#loginForm").submit(function (e) {
if (!$("#loginForm").valid()) {
return false;
}
var pass = $("#Password").val();
var passMD5 = CryptoJS.MD5(pass);
$("#Password").val(passMD5);
});
如果验证失败,您将看到客户端消息,如果成功,则加密密码将传递给服务器。