1.网站身份验证设置:启用匿名(禁用的时候,Action标记[AllowAnonymous]仍不能访问,暂不清楚是否有配置可以禁用时访问)、启用Forms验证
1 <system.web> 2 <authentication mode="Forms"> 3 <forms loginUrl="Account/LogIn" cookieless="UseCookies" name="loginName" /> 4 </authentication> 5 </system.web>
2.登录操作
[HttpPost, AllowAnonymous] public ActionResult Login(string AccountNo, string Password) { //验证账号密码 //创建身份验证票证并写入Cookie FormsAuthentication.SetAuthCookie(AccountNo, true); //返回到登录页之前的请求页 return Redirect(FormsAuthentication.GetRedirectUrl(AccountNo, false)); }
3.登出
public ActionResult Logout() { FormsAuthentication.SignOut(); return Redirect(FormsAuthentication.LoginUrl); }
4.注册全局过滤器AuthorizeAttribute
5.登录及验证过程(FROM:细说ASP.NET Forms身份认证):
用户登录的过程大致是这样的: 1. 检查用户提交的登录名和密码是否正确。 2. 根据登录名创建一个FormsAuthenticationTicket对象。 3. 调用FormsAuthentication.Encrypt()加密。 4. 根据加密结果创建登录Cookie,并写入Response。 在登录验证结束后,一般会产生重定向操作, 那么后面的每次请求将带上前面产生的加密Cookie,供服务器来验证每次请求的登录状态。 每次请求时的(认证)处理过程如下: 1. FormsAuthenticationModule尝试读取登录Cookie。 2. 从Cookie中解析出FormsAuthenticationTicket对象。过期的对象将被忽略。 3. 根据FormsAuthenticationTicket对象构造FormsIdentity对象并设置HttpContext.User 4. UrlAuthorizationModule执行授权检查。
5.Request上下文(HttpContextBase)的IPrincipal对象提供身份验证相关信息
@Context.User.Identity.Name @*登录账号*@