Asp重定向到登录,即使请求.IsAuthenticated = true(使用windows身份验证)



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

现在发生的是,网站上写着"Hello DOMAINTestUser"这表明,

  • 请求。IsAuthenticated必须为true
  • User.Identity。名称设置为正确的用户

然而:我总是发现自己在"帐户/登录"页面。澄清一下:我的登录页面使用的是执行"请求"的一般布局模板。上面提到的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)

以前遇到过这种情况,必须将我的本地IIS部署与部署在服务器上的IIS部署进行比较,我的项目在本地IIS部署中运行得很好。结果发现有一些不应该部署的额外dll 。不过我的情况和你的有点不同。这个项目是在我的本地机器上工作的,而不是在局域网环境中。需要删除的额外文件:

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

我希望这和你的情况一样,这是一个很难解决的部署问题。

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

这将留给你:

<system.web>
    <authentication mode="Windows"></authentication>        
</system.web>

我在这里找到了解决方案: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>

对我来说这是很糟糕的做法…但是,嘿,它完成了工作。

相关内容

最新更新