在之前的我們已經講過asp.net權限認證:Windows認證,現在我們來講講域賬號登錄,
這不是同一件事哦,windows認證更多的是對資源訪問的一種權限管控,而域賬號登錄更多的是針對用戶登錄的認證,他一般與forms認證結合一起使用
demo就用之前的asp.net權限認證:Forms認證
1、改一下LoginController,如下
1 public class LoginController : Controller 2 { 3 public ActionResult Index() 4 { 5 var returnUrl = Request["ReturnUrl"]; 6 7 if (Request.HttpMethod == "POST") 8 { 9 try 10 { 11 // 格式為: 域\登錄名 12 var domainUser = Request["userid"]; 13 var password = Request["password"]; 14 var userArr = domainUser.Split('\\'); 15 16 var entry = new DirectoryEntry(string.Concat("LDAP://", userArr[0]), userArr[1], password); 17 var search = new DirectorySearcher(entry); 18 var result = search.FindOne(); 19 if (result != null) 20 { 21 var ticket = new FormsAuthenticationTicket( 22 1, 23 userArr[1], 24 DateTime.Now, 25 DateTime.Now.AddMinutes(20), 26 true, 27 "role1,role2,role3,role4", 28 "/" 29 ); 30 31 var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)); 32 cookie.HttpOnly = true; 33 HttpContext.Response.Cookies.Add(cookie); 34 35 return Redirect(returnUrl); 36 } 37 } 38 catch (Exception ex) 39 { 40 // 拋出異常。 41 } 42 } 43 44 ViewBag.ReturnUrl = returnUrl; 45 46 return View(); 47 } 48 }
2、運行項目,出現登錄頁面,正常的,因為我們默認首頁就加了權限限制,輸入域賬戶口令
3、登錄
完全沒有問題,是不是很簡單呀?