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

标签 asp.net-mvc windows-authentication

我已经搜索了一整天了,但找不到解决方案。

我正在为 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/

相关文章:

c# - html.RouteLink 的工具提示

c# - 命名空间 'Http' 中不存在类型或命名空间名称 'System.Web'

c# - 在开发/测试环境中模拟 Active Directory 登录

linux - 我在 Linux 上通过 Windows 身份验证访问 WSO2 Identity Server 时收到登录提示和警告

javascript - 在 ASP.net MVC2 中创建动态 javascript 的正确方法是什么?

mysql - 连接 ASP.NET MVC 应用程序以移动 MySQL 数据库时出现问题

css - 如何在 mvc razor 中对齐编辑器的文本框?

asp.net - iis7中的windows身份验证

asp.net-mvc - 带有Windows身份验证的ASP.NET MVC Intranet应用程序,如何自动获取当前域用户?

c# - 认证失败,因为远程方在从 webservice 获得响应时关闭了传输流异常