.Net MVC 身份验证

Posted jskenson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.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  @*登录账号*@

 

以上是关于.Net MVC 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net MVC 5 身份验证与另一个 MVC 5 身份网站

.Net MVC 身份验证

ASP.NET MVC:窗体身份验证及角色权限管理示例

ASP.NET MVC5 自定义身份验证

如何在 ASP.Net MVC 应用程序中使用来自 WCF 身份验证服务的身份验证 cookie

使用身份验证 ASP.NET MVC 中的用户