即使Request.IsAuthenticated = true,Asp也会重定向到Login(使用Windows身份验证)

时间:2013-04-05 07:50:58

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-membership

我有一个web应用程序,我已在WAN和LAN中运行。相同的代码在单独的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)

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

哪会让你:

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

答案 2 :(得分: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>

对我来说看起来非常糟糕的做法......但是,嘿,它能完成这项工作。