2

关于 MVC4 应用程序中的 Windows Auth 的两个问题:

  1. 如何设置它以便我可以针对两个 Windows 域进行身份验证?

我正在尝试做的事情:

[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();
    }
    ...
}
  1. 有没有办法让登录屏幕成为页面上的表单,而不是弹出窗口询问用户名/密码?
4

2 回答 2

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.

在这里阅读

现在,当您想使用 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 身份验证的不同方式。

于 2013-07-30T01:29:55.470 回答
1

您需要做的第一件事是在 web.config 中设置您的身份验证模式(如果尚未设置)。

<system.web>
  <authentication mode="Windows"/>
</system.web>

如果用户已经在他/她的域中进行了身份验证,这应该消除挑战。

DOMAINONE 和 DOMAINTWO 是同一个域的子域吗?

于 2013-07-29T22:23:36.720 回答