我已经搜索了一整天了,但找不到解决方案。
我正在为 Intranet 应用程序使用 Windows 身份验证。我希望能够单击链接并以其他用户身份登录,类似于 SharePoint 中的选项。
我见过很多基于 .net 的 SO 解决方案,但没有一个是特定于 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 等。
最佳答案
我对这个问题的解决方案是创建一个“SignInAsDifferentUser”公共(public)方法(操作)并创建一个 session 变量来指示我以前是否访问过该方法。第一次访问会将 session 变量 (IsEntered) 设置为 true 并返回 HttpUnauthorizedResult()。用户输入新凭据后,您将返回此方法。但 session 已经设置为 true。因此,您将被重定向到 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();
}
}
关于asp.net-mvc - ASP.NET MVC Windows 身份验证以不同用户身份登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18768924/