淺談MVC Form認證


 

簡單的談一下MVC的Form認證。

在做MVC項目時,用戶登錄認證需要選用Form認證時,我們該怎么做呢?下面我們來簡單給大家說一下。

首先說一下步驟

1、用戶登錄時,如果校驗用戶名密碼通過后,需要調用FormsAuthentication.SetAuthCookie()這個方法。

2、用戶退出時,需要調用FormsAuthentication.SignOut();方法

3、在配置文件web.config中,system.web 節點下, 配置<authentication  mode="Forms"/>

4、校驗:HttpContext.User.Identity.IsAuthenticated,如果是false,則沒有通過認證,如果是true,則通過了認證

以上這三部,即可完成用戶登錄的Form認證了。

好了,下面我們來看一下具體的代碼。(View中的代碼就不貼了,只貼Controller中的代碼吧)

1、建立一個用於用戶登錄用的Model

1     public class LoginViewModel
2     {
3         [DisplayName("用戶名")]
4         public string UserName { get; set; }
5         [DisplayName("密碼")]
6         public string Password { get; set; }
7     }

2、建立登錄用的Controller與頁面,其中Controller里面有登錄與退出兩個Action

 1     public class LoginController : Controller
 2     {
 3         // GET: Login
 4         public ActionResult Index(LoginViewModel loginViewModel)
 5         {
 6             if (loginViewModel.UserName == "admin" && loginViewModel.Password == "123456")
 7             {
 8                 FormsAuthentication.SetAuthCookie(loginViewModel.UserName, false);
 9                 return RedirectToAction("Index", "Main");
10             }
11             return View();
12         }
13 
14         //GET: LogOut
15         public ActionResult LogOut()
16         {
17             FormsAuthentication.SignOut();
18             return RedirectToAction("Index", "Login");
19         }
20     }

3、建立一個登錄后,用戶跳轉的頁面與Controller

1     public class MainController : BaseController
2     {
3         // GET: Main
4         public ActionResult Index()
5         {
6             return View();
7         }
8     }

4、登陸后跳轉的頁面的Controller是繼承的BaseController,那么BaseController是怎么寫的呢?

 1     public class BaseController : Controller
 2     {
 3         protected override void OnActionExecuting(ActionExecutingContext filterContext)
 4         {
 5             base.OnActionExecuting(filterContext);
 6             //登錄認證處理
 7             if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
 8             {
 9                 //未登錄
10                 Response.Redirect("~/Login/Index");
11             }
12             else
13             {
14                 //已登錄,Action級權限控制處理
15                 var controllerName = filterContext.RouteData.Values["controller"].ToString();//控制器名稱
16                 var actionName = filterContext.RouteData.Values["action"].ToString(); //Action名稱
17                 //根據controllerName與actionName進行權限檢查
18                 /*
19                  if()
20                  { }
21                  else
22                  { }
23              */
24             }
25         }
26     }

這個BaseController很簡單,大體的作用就是,方式繼承這個BaseController的控制器,當執行其下面的Action時,會進行Form校驗,如果校驗成功,則……,如果校驗不成功則……,

登陸后的頁面的Controller都會繼承BaseController,這樣,就不用在每個Controller中的Action重復的寫Form認證的代碼了。

是不是很簡單?

當然,具體的細節問題這里都沒有涉及到,這里只是簡單的給大家介紹一下Form認證的使用,具體的細節問題,大家可以參考園中的大神們的博文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM