ASP.NET MVC Windows身份验证以不同用户身份登录

时间:2013-09-12 15:51:15

标签: asp.net-mvc windows-authentication

我一直在寻找,但我找不到解决方法。

我正在为Intranet应用程序使用Windows身份验证。我希望能够单击链接并以其他用户身份登录,类似于SharePoint中的选项。

我已经在.net上看到了许多提议的解决方案,基于.net但没有特定的MVC。

我遇到过HttpUnauthorizedResult

return new HttpUnauthorizedResult();

强制用户登录,但我不相信您可以在登录后重定向。

我也试过

Response.StatusCode = 401;
Response.StatusDescription = "Unauthorized";
Response.SuppressContent = true;
HttpContext.Current.ApplicationInstance.CompleteRequest();

三次尝试后,我收到HTTP错误401.0 - 未经授权

这篇文章是我发现的最详细的文章,但它不是专门针对mvc而我修改它的尝试失败了。

http://www.roelvanlisdonk.nl/?p=825

有没有人让这个工作或者你能指出我正确的方向。

我对跨浏览器解决方案感兴趣,因为我们的一些用户使用iPad等等。

2 个答案:

答案 0 :(得分:3)

我对此问题的解决方法是创建一个“SignInAsDifferentUser”公共方法(操作)并创建一个会话变量来指示我以前是否访问过此方法。第一次访问将会话变量(IsEntered)设置为true并返回HttpUnauthorizedResult()。一旦用户输入新凭证,您将回到此方法。但会议已经设置为真。因此,您将被重定向到Index方法。我希望这会有所帮助。

public ActionResult SignInAsDifferentUser()
{

        if ((bool)(Session["IsEntered"] ?? false))
        {
            // already entered...
            Session["IsEntered"] = false;
            return RedirectToAction("Index", "Home");
        }
        else
        {
            Session["IsEntered"] = true;                
            return new HttpUnauthorizedResult();
        }

}

答案 1 :(得分:0)

我需要在经典的ASP.net中使用Web表单执行此操作。我想这同样适用于MVC。我必须创建一个Active Directory库,以“交互”用户身份登录,并将网站设置为标识模拟。您需要访问Win32 lib调用才能执行此操作。如果你仍然感兴趣,我可以在Codeplex或其他东西中构建一个样本。