关于MVC4应用程序中的Windows Auth的两个问题:
我想做什么:
[Authorize(Roles = @"DOMAINONE\Group Name")]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
...
}
另一个域名:
[Authorize(Roles = @"DOMAINTWO\Group Name")]
public class StaffController : Controller
{
public ActionResult Index()
{
return View();
}
...
}
答案 0 :(得分:2)
您可能希望看到Windows和表单身份验证的混合:是否有办法在页面上登录窗体,而不是弹出窗口要求用户名/密码?
如果您处于经典模式 - 您可以同时使用Windows和Forms身份验证。将弹出警告
Challenge-based and login redirect-based authentication cannot be used
simultaneously
但是,你可以忽略这个警告。 CarlosAg说:
we decided to leave it there was because it is still behavior that many user
scenarios would be consider incorrect, since most of the time forms
authentication uses anonymous authentication and not windows.
阅读here.
现在,当您想要使用Windows身份验证时,可以在此处找到解决方案:http://mvolo.com/iis-70-twolevel-authentication-with-forms-authentication-and-windows-authentication/,它允许更改页面的身份验证方式。 使用Windows身份验证时,另一种管理方法是使用代码管理用户名:
string user = Request.ServerVariables["LOGON_USER"];
请参阅此链接:http://beensoft.blogspot.in/2008/06/mixing-forms-and-windows-authentication.html,它提供了一种混合表单和Windows身份验证的不同方法。
答案 1 :(得分:1)
您需要做的第一件事是在web.config中设置身份验证模式(如果尚未设置)。
<system.web>
<authentication mode="Windows"/>
</system.web>
如果用户已经在他/她的域中进行了身份验证,则应该消除挑战。
同一域的DOMAINONE和DOMAINTWO子域名是什么?