【发布时间】:2020-06-18 04:17:58
【问题描述】:
我放弃了在同一个项目中实现 Windows 和 Forms 身份验证模式,我遇到了无限登录循环、授权错误和噩梦般的意大利面条代码。
我保持 Forms authentication / RoleProvider 保持原样,但我的想法是在 ActionResult Login 的 HttpPost 中触发 Windows 身份验证,因此用户将输入他们的域用户名,按下登录按钮,然后将文本输入与HttpContext 身份,如果 true 提示 Windows 身份验证,如果登录成功则重定向到 admin/user 对应的网页(从 SQL 表中获取角色)。
这是我伪编码的一个模糊概念。
[HttpPost]
public ActionResult Login (usuario u, string retornaUrl) {
string userDomWin = System.Web.HttpContext.Current.Request.LogonUserIdentity.Name.ToString ().Substring ((HttpContext.User.Identity.Name.ToString ().IndexOf ("\\")) + 1);
string userWin = userDomWin.Replace ("DOMAIN\\", "");
var usuarioSys = (from d in db.usuario where d.usuarioDom == userWin select d.usuarioDom).FirstOrDefault ();
if (usuarioSys != null) {
//TRIGGER WINDOWS AUTH
if (WINDOWSAUTH == true) {
Session["uname"] = usuarioSys.ToString ();
if (usuarioSys != null) {
return Redirect ("~/Home/Index");
} else {
TempData["Message"] = "FINISHED.";
return Redirect ("~/Account/Login");
}
} else {
TempData["Message"] = "UNAUTOHRIZED.";
return Redirect ("~/Account/Login");
}
}
return View ();
}
你能实现一些等效的东西吗?
【问题讨论】:
标签: c# sql asp.net asp.net-mvc