在 ASP.NET MVC 项目中实现身份验证和授权的最简单方法之一是使用内置表单身份验证模块。当您创建一个新的 ASP.NET MVC 项目时,它已经包含了您开始使用 Forms Auth 所需的所有内容。
它所要做的就是创建特定的表 (5),您无需担心或跟踪代码中的每一个表。这一切都非常简单。您始终可以将 ASP.NET MVC 成员资格提供程序创建的用户映射到您自己的 UserMaster 表。
接下来,您只需在 ActionMethod 或 Controller 或 global.asax 中标记[Authorize] 属性即可,一切就绪。
代码很简单:
用于登录:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password,
persistCookie: model.RememberMe))
{
///rest of the logic
}
}
下面还有一些有用的功能会派上用场:
if(WebSecurity.UserExists(username)){ /// ur logic }
//or
WebSecurity.CreateUserAndAccount(username, password);
//or
System.Web.Security.Roles.AddUserToRole(username, UserRole);
你猜怎么着,你不必担心在一些HttpModule 中设置一些标志或首先总是执行函数来查看会话用户是否存在,[Authorize] 属性会处理这些。
使用自定义UserMaster映射
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password,
persistCookie: model.RememberMe))
{
try
{
try
{
//below is my custom method IsValidUser with my own logic for
// valid user
MembershipCore.IsValidUser(model.UserName);
if (MembershipCore.isFirstTimeLogin(model.UserName))
{
//Show License Screen in a window
return RedirectToAction("License");
}
//my custom method setting custom Session variables
MembershipCore.SetLoggedInUser(model.UserName);
}
}
}