我一直在寻找,但我找不到解决方法。
我正在为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等等。
答案 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或其他东西中构建一个样本。