在之前的我们已经讲过asp.net权限认证:Windows认证,现在我们来讲讲域账号登录,
这不是同一件事哦,windows认证更多的是对资源访问的一种权限管控,而域账号登录更多的是针对用户登录的认证,他一般与forms认证结合一起使用
demo就用之前的asp.net权限认证:Forms认证
1、改一下LoginController,如下
public class LoginController : Controller
{
public ActionResult Index()
{
var returnUrl = Request["ReturnUrl"]; if (Request.HttpMethod == "POST")
{
try
{
// 格式为: 域\登录名
var domainUser = Request["userid"];
var password = Request["password"];
var userArr = domainUser.Split('\\'); var entry = new DirectoryEntry(string.Concat("LDAP://", userArr[]), userArr[], password);
var search = new DirectorySearcher(entry);
var result = search.FindOne();
if (result != null)
{
var ticket = new FormsAuthenticationTicket(
,
userArr[],
DateTime.Now,
DateTime.Now.AddMinutes(),
true,
"role1,role2,role3,role4",
"/"
); var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
cookie.HttpOnly = true;
HttpContext.Response.Cookies.Add(cookie); return Redirect(returnUrl);
}
}
catch (Exception ex)
{
// 抛出异常。
}
} ViewBag.ReturnUrl = returnUrl; return View();
}
}
2、运行项目,出现登录页面,正常的,因为我们默认首页就加了权限限制,输入域账户口令
3、登录
完全没有问题,是不是很简单呀?