ASP.NET MVC结合JavaScript登录、校验和加密是一个比较常见的需求,可以通过以下步骤实现:
步骤一:创建ASP.NET MVC项目
在Visual Studio中创建ASP.NET MVC项目,选择“Empty”模板即可。
步骤二:添加登录页面
在Views文件夹下创建登录页面,命名为Login.cshtml。该页面包含用户名和密码的输入框,和一个“登录”按钮。当用户点击“登录”按钮时,会向服务器发送登录请求。
示例代码:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Login</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function () {
$('#login-form').submit(function (e) {
e.preventDefault();
var formData = {};
$(this).serializeArray().forEach(function (item) {
formData[item.name] = item.value;
});
$.ajax({
url: '/Account/Login',
type: 'POST',
data: formData,
success: function (response) {
if (response.success) {
window.location.href = '/Home/Index';
} else {
alert(response.message);
}
},
error: function () {
alert('登录失败');
}
});
});
});
</script>
</head>
<body>
<form id="login-form">
<input type="text" name="username" placeholder="用户名" />
<input type="password" name="password" placeholder="密码" />
<button type="submit">登录</button>
</form>
</body>
</html>
步骤三:添加登录校验
在ASP.NET MVC中,我们通常使用数据注解(Data Annotation)来实现表单校验。我们可以在ViewModel中添加一些属性,然后使用数据注解标记这些属性,从而实现表单校验。当用户点击“登录”按钮时,通过JavaScript将表单数据发送到服务器进行校验。如果校验通过,则跳转到首页;否则,返回错误消息。
示例代码:
public class LoginViewModel
{
[Required(ErrorMessage = "请输入用户名")]
public string Username { get; set; }
[Required(ErrorMessage = "请输入密码")]
public string Password { get; set; }
}
public class AccountController : Controller
{
[HttpPost]
public ActionResult Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
// 校验用户名和密码是否正确
if (model.Username == "admin" && model.Password == "123456")
{
FormsAuthentication.SetAuthCookie(model.Username, false);
return Json(new { success = true });
}
else
{
return Json(new { success = false, message = "用户名或密码错误" });
}
}
else
{
string errorMessage = string.Join(",", ModelState.Values
.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage));
return Json(new { success = false, message = errorMessage });
}
}
}
步骤四:添加加密功能
在ASP.NET MVC中,我们可以使用FormsAuthentication来实现加密。当用户登录成功后,我们可以使用FormsAuthentication.SetAuthCookie方法将用户信息保存到Cookie中。然后,在全局过滤器中,我们可以使用FormsAuthenticationTicket来对Cookie进行加密。
示例代码:
public class AuthAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return httpContext.User.Identity.IsAuthenticated;
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
FormsAuthenticationTicket authTicket =
((FormsIdentity)filterContext.HttpContext.User.Identity).Ticket;
// 对Cookie进行加密
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie encryptedCookie =
new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
encryptedCookie.HttpOnly = true;
encryptedCookie.Secure = FormsAuthentication.RequireSSL;
encryptedCookie.Domain = FormsAuthentication.CookieDomain;
encryptedCookie.Path = FormsAuthentication.FormsCookiePath;
encryptedCookie.Expires = authTicket.Expiration;
filterContext.HttpContext.Response.Cookies.Add(encryptedCookie);
}
}
}
以上就是ASP.NET MVC结合JavaScript登录、校验和加密的完整攻略,其中包含了两条示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET MVC结合JavaScript登录、校验和加密 - Python技术站