1

我有一个在 WAN 和 LAN 中运行的 web 应用程序。相同的代码在不同的 Web 应用程序中运行。在 WAN 中,我已将其配置为使用表单身份验证。它无缝地工作。但是 LAN 应用程序配置为使用 Windows 身份验证。

现在发生的情况是,网站说“Hello DOMAIN\TestUser”,这表明,

  • Request.IsAuthenticated 必须为真
  • User.Identity.Name 设置为正确的用户

但是:我总是在“帐户/登录”页面上找到自己。澄清一下:我的登录页面正在使用执行上述“Request.IsAuthenticated”的通用布局模板。

我的问题:当身份验证明显成功时,为什么我被重定向到登录页面?我该怎么做才能让它发挥作用?:)

我想这是我配置的关键部分:

  <system.web>
    <authentication mode="Windows">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <membership defaultProvider="SimpleMembershipProvider">
      <providers>
        <clear />
        <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
      </providers>
    </membership>
  </system.web>

此 Web 应用程序的 IIS 设置为启用 Windows 身份验证并禁用所有其他身份验证方法。

(我正在使用 ASP.Net MVC 4)

4

3 回答 3

1

之前遇到过这种情况,并且必须将我的项目运行良好的本地 IIS 部署与部署在服务器上的进行比较。事实证明,有一些额外的 DLL不应该被部署。不过,我的情况与您的情况有些不同。该项目在我的本地机器上运行,但不在 LAN 环境中。需要删除的额外文件:

  • WebMatrix.Data.dll
  • WebMatrix.WebData.dll

我希望它与您的情况相同,这是一个难以解决的部署问题。

于 2013-04-05T08:01:25.093 回答
0

取出<forms loginUrl="~/Account/Login" timeout="2880" />线和<membership />部分可能有帮助吗?

这会给你留下:

<system.web>
    <authentication mode="Windows"></authentication>        
</system.web>
于 2013-04-05T09:33:58.350 回答
0

我在这里找到了解决方案: http ://martinnormark.com/asp-net-mvc-3-windows-authentication-problem-redirects-to-account-login 在花了几个小时谷歌搜索后...

幸运的是,答案非常简单:将这两个属性添加到您的应用设置中:

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

对我来说,这似乎是一种非常糟糕的做法……但是,它确实有效。

于 2013-04-05T12:11:11.623 回答