我敢肯定,这与IIS有关,但我无法弄清楚。

我有一个使用表单身份验证的网站。当我的网站试图访问任何文件资源(JavaScript文件,CSS等)时,我将重定向到我的web.config中设置的表单登录页面。如果仅将地址键入地址栏,我也会重定向。

表单Auth的Web.config条目非常基本:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

还有两个位置节点可以拒绝网站其他部分的用户:

<location path="n2">
  <system.web>
    <authorization>
      <allow roles="Editors" />
    </authorization>
  </system.web>
</location>
<location path="web.config">
  <system.web>
    <authorization>
      <deny users="*" />
    </authorization>
  </system.web>
</location>

我正在使用Windows Server 2008 R2上的标准IIS7安装。

编辑因此,如果我添加随机auth cookie(FormsAuthentication.SetAuthCookie()),资源可用,我知道它必须是我的身份验证模型,它以某种方式弄乱了。它在另一台服务器上工作(我只是复制了它)。有什么想法我如何解决问题?

有帮助吗?

解决方案

我有同样的错误,就我而言,诀窍是设置匿名身份验证以使用应用程序池标识而不是IISR中的IUSR

  1. 打开IIS
  2. 扩展站点
  3. 选择[您的网站
  4. 双击身份验证(将在IIS“区域”或安全“类别”下)
  5. 选择匿名身份验证
  6. 单击“动作”窗格中的编辑
  7. 单击“应用程序池身份”广播按钮

其他提示

我用 allow * 为我 Content 文件夹。这将阻止对静态内容进行任何授权。

  <location path="Content">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

里克

在IIS中,我的匿名身份验证正确,用户已设置为IUSR。因此,我需要进入Windows Explorer,导航到我的Web应用程序目录,右键单击属性,安全选项卡,编辑按钮,并给IUSR读取,列出,读取和执行权限(默认设置)。确保更改将由所有儿童继承,申请,可能等待,您可以走。

自从我做任何ASP.NET表单工作以来,这已经是时间的时候了,但是第一个问题是 - 您确定您的用户是“编辑”角色的成员。您可以使用网站管理工具来设置我认为?http://msdn.microsoft.com/en-us/library/ssa0wsyf.aspx

那是因为您已经拒绝了所有人。在IIS 7中,由于集成管道,即使您尝试浏览CSS或任何静态页面,您也会被重定向。

如果需要,将静态内容放入文件夹中,并允许访问它。

不要使用 <location> Web.config中的标签处理ASP.NET MVC应用程序中的授权,因为位置不再具有任何意义。您在web.config中需要的只是 authentication 标签。在MVC授权中,可以通过装饰适当的控制器和/或使用 [Authorize] 属性。

我的情况完全相同,发现这是因为我忘记了从IIS内部允许匿名访问该网站!这意味着即使是未受保护的静态资源,构造验证始终是启动的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top