表单auth重定向css/script包含到HTTP 302的登录页面

Dan*_*ell 43 asp.net-mvc forms-authentication http-status-code-302

我在登录页面,css文件和js文件中有一些包含.

<link rel="stylesheet" type="text/css" href="../../ext/resources/css/ext-all.css" />
<script type="text/javascript" src="../../ext/bootstrap.js"></script>
Run Code Online (Sandbox Code Playgroud)

不幸的是,浏览器为这些请求获得了302响应.Forms Auth将请求视为未经授权并将其重定向到登录页面.它没有意识到请求首先来自登录页面.

GET http://localhost:50880/ext/resources/css/ext-all.css HTTP/1.1

HTTP/1.1 302 Found
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Account/LogOn?ReturnUrl=%2fext%2fresources%2fcss%2fext-all.css">here</a>.</h2>
</body></html>
Run Code Online (Sandbox Code Playgroud)

我想也许设置包含文件夹(ext)的权限可能对每个人都有帮助.

我在其他项目中没有遇到过这个问题.

Dav*_*isk 72

我有同样的问题.这是我解决它的方式.

在IIS7中,单击您的网站,然后双击"身份验证"按钮.单击"匿名身​​份验证",然后单击右侧的"编辑..."链接.确保选中"应用程序池标识"复选框.

我的应用程序池在"网络服务"用户下运行(而不是"ApplicationPoolIdentity").您可以在IIS中的应用程序池的"高级设置"中选择"标识".该用户已获得对该网站文件系统的完全访问权限.

  • 这个答案需要在互联网上更多地提供 - 如此多的挖掘和这个固定的事情如此迅速. (6认同)
  • Geez,为什么不默认设置? (2认同)
  • 就在我准备把电脑扔到窗外的时候,这个带着智慧之言的人救了我. (2认同)

PSK*_*PSK 30

您需要在配置文件中排除css文件和图像以进行身份​​验证.使用位置标记可以排除单个文件或目录.

<location path="<RELATIVE_PATH_OF_YOUR_RESOURCE_FILES>">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

  • 我想到了.在设置新的IIS应用程序时,我从检查表中遗漏了这些内容:选择应用程序,双击"身份验证",选择"匿名身份验证",然后选择"编辑",并将其更改为使用"应用程序池标识".确保用户对包含该站点的文件夹具有权限. (35认同)
  • 这对我来说也没有解决它,但是我发现了我的问题 - CSS/JS文件是加密的(通过NTFS),我只是把它们拖到项目中,所以它们保持加密状态.取消选中文件属性下的"加密"复选框可解决问题. (2认同)

vcu*_*kit 7

所以,这就是我所做的,完全解决了这个问题.

首先,我像其他人所说的那样对web.config进行了更改.

我在IIS中使用匿名身份验证,并且如本期所述,我进入了IIS>应用程序池>右键单击我的应用程序池>编辑>更改了应用程序池以使用应用程序池标识.

那么 - 我去了包含我的网站的父文件夹,进入该文件夹的权限,并添加了服务器的NETWORK SERVICE帐户来访问该文件夹.这样做对我来说.这是因为Application Pool在ApplicationPoolIdentity下运行,ApplicationPoolIdentity是本地计算机上的NETWORK SERVICE帐户.

希望这有助于某人!


Mik*_*keD 5

我在这方面遇到的问题是我从互联网上下载了一个jquery插件并将其复制到我在web服务器上的内容目录中,而Windows下的所有文件都被阻止,以至于网络服务器无法正常访问它们.在Windows中取消阻止文件解决了这个问题.