如何在MVC应用程序中切换身份验证?

时间:2013-11-22 17:02:20

标签: asp.net-mvc asp.net-mvc-4 authentication windows-authentication

我使用Individual User Accounts身份验证创建了Internet MVC应用程序,但现在这个项目应该是带有Windows身份验证的Intranet ...如何在项目完成时切换身份验证?我不是MVC的大师,这对我来说是新技术,所以任何帮助请尽可能地说明所有步骤=)

4 个答案:

答案 0 :(得分:14)

在你项目的Web.config中。第一步是改变:

<authentication mode="Forms">
</authentication>

<authentication mode="Windows">
</authentication>

选择项目并在属性窗口中点击F4可以更改身份验证方法。

然而,不是我在这里一步一步地使用这个非常容易遵循的教程: Enabling Windows Authentication

答案 1 :(得分:5)

由于我通过谷歌尝试同样的事情发现了这个问题,并且Firearm的链接并没有完全正确的过程,我将尝试列出我在这里经历的步骤。显然,如果我告诉你删除某些东西,那只会意味着你不使用它。我认为您不必按任何特定顺序执行这些步骤。 此外,我正在使用实体框架,因此您必须寻找其他地方删除它。

  1. 在解决方案资源管理器中,突出显示您的项目并按f4。这将打开该项目的属性窗口。禁用匿名身份验证。启用Windows身份验证。
  2. 工具 - &gt; NuGet包管理器 - &gt;管理解决方案的NuGet包...卸载名称中包含“owin”的任何内容,Microsoft.AspNet.Identity.EntityFramework和Microsoft.AspNet.Identity.Core。
  3. 打开您的Web.config。在运行时,在assemblyBinding下,删除所有遗留下来的Owin内容的dependentAssembly。在system.web下,将<authentication mode="None" />替换为<authentication mode="Windows" /> <authorization> <deny users="?" /> </authorization>。在system.webServer下,删除handlers。在模块下,删除<remove name="FormsAuthentication" />
  4. 删除帐户和管理控制器和视图。从模型中删除ManageViewModels
  5. 在App_Start下,摆脱IdentityConfigStartup.Auth
  6. 在您的网络配置旁边的顶层,是Startup.cs。摆脱它。
  7. 制作一个新的ApplicationDbContext。它应该来自DbContext。摆脱构造函数中的throwIfV1Schema: false。然后你可以从Models文件夹中删除IdentityModels。添加新迁移并更新数据库。
  8. 显然,您必须清除自己为Identity所做的任何引用。

答案 2 :(得分:3)

搜索完全相同的问题导致我阅读本文,但是答案有点陈旧,所以使用MVC 5的ASP.NET应该是Microsoft的详细文档:

  1. 要在MVC项目中检测Windows身份验证,向导会从 web.config 文件中查找authentication元素。

    <configuration>
        <system.web>
            <authentication mode="Windows" />
        </system.web>
    </configuration>
    
  2. 要在Web API项目中检测Windows身份验证,向导会从项目的 .csproj 文件中查找IISExpressWindowsAuthentication元素:

    <Project>
        <PropertyGroup>
            <IISExpressWindowsAuthentication>enabled
            </IISExpressWindowsAuthentication>
        </PropertyGroup>
    </Project>
    
  3. 找到 Diagnosing errors with the Azure Active Directory Connection Wizard

    对于我的具体问题,它是切换到Azure AD而不是Windows身份验证(已预设),在开发人员网络网站上找到了更多步骤。

答案 3 :(得分:2)

我担心我对你的回答有点迟,对如何实现SwitchUser功能提出疑问,但对于那些仍在努力解决这个问题的人(即使是Microsoft SharePoint仍然如此)不能让它工作......),这里是如何完成的:(我刚写完文章)

Switch User Functionality using MVC4 and Windows Authentication

如果您需要有关如何使用AD和Windows Server 2012(或更高版本)获取Intranet网站的Windows身份验证工作的更多信息,请查看我的以下文章:

Windows Authentication on Intranet Website using AD and Windows Server 2012 (or Higher)

快乐的编码!