MVC4:从表单切换到窗口身份验证

时间:2014-11-06 07:47:39

标签: c# asp.net-mvc-4 authentication

我昨天整个下午尝试了googoling,但也许我无法搜索好,我找不到解决方案!

我的MVC4应用程序在表单身份验证中运行良好,但现在公司请求是在Windows身份验证中切换身份验证。

我尝试简单地更改Web配置并将其设置为Windows身份验证,但是当我启动调试时,用户为空(User.Identity.Name =“”)。

所以我尝试通过VS模板创建一个新的Intranet webapp来查看它是否正常工作,确实如此。我比较了Web配置,没有遗漏任何东西,但我无法理解应用程序如何获取用户,因为在这里我发现User.Identity.Name数据正确。

所以我遗漏了一些东西,或者我只是需要添加一些代码? 谢谢你的帮助。

-EDIT:我尝试进行会话开始检查,但User.Identity仍为空且未经过身份验证。无法理解为什么!

2 个答案:

答案 0 :(得分:0)

请验证此配置以进行Windows身份验证

 <authentication mode="Windows" />
    <authorization>
      <allow users="yourdomain\someotheruser" />
      <deny users="*" />
    </authorization>

答案 1 :(得分:0)

第1步:打开Web.config文件并进行以下修改:

<!—
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
-->

<authentication mode="Windows" />

第2步:默认情况下,MVC应用使用表单身份验证和简单成员身份,因此您需要将其设置为“false”才能运行Windows身份验证。

<appSettings>
  <add key="webpages:Version" value="2.0.0.0" />
  <add key="webpages:Enabled" value="false" />
  <add key="PreserveLoginUrl" value="true" />
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />

  <add key="autoFormsAuthentication" value="false" />
  <add key="enableSimpleMembership" value="false"/>

</appSettings>

步骤3 :在解决方案资源管理器中选择项目名称,然后在属性资源管理器中,单击以启用Windows身份验证。

第4步:如果您希望在开发服务器上为经过身份验证的用户提供完整的网站,则可以在属性资源管理器中禁用匿名身份验证。

Reference