.Net MVC 身份验证

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  @*登录账号*@

猜你喜欢

转载自www.cnblogs.com/jskenson/p/11137354.html
今日推荐