MVC,浏览器返回错误:网站重定向你太多次当我通过web.config文件浏览特定的受限文件夹上的文件
我想限制匿名用户访问音乐文件夹(在我的网站的根目录)。然后我把这个代码在的web.config文件在的Music
文件夹:MVC,浏览器返回错误:网站重定向你太多次当我通过web.config文件浏览特定的受限文件夹上的文件
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
我测试了这一个了:
<allow users="*" />
<deny users="?" />
另外,的web.config文件的网站有以下配置:
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="2880" />
</authentication>
<modules runAllManagedModulesForAllRequests="false">
<remove name="FormsAuthenticationModule" />
<add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />
<remove name="UrlAuthorization" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
</modules>
<rule name="Redirect to https" enabled="true" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:0}" appendQueryString="false" redirectType="Permanent" />
</rule>
<location path="~/Music">
<system.webServer>
<handlers accessPolicy="Read" />
</system.webServer>
</location>
而且这个代码是的startup.cs的一部分:
var loginPath= new UrlHelper(HttpContext.Current.Request.RequestContext).Action(MVC.Account.Login());
appBuilder.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString(loginPath),
// Other Codes
}
现在,当我浏览到example.com/music/1.mp3
还给我/account/login
,但是当我登录它告诉我从下面的错误浏览器:
WebsiteName redirected you too many times.
net::ERR_TOO_MANY_REDIRECTS
另外,如果我改变身份验证模式到none
,它告诉我喜欢它的提示(即我不会啦!):
Note1: I cleared the browser cookies but no success.
- 什么是重定向循环的原因是什么?
- 这应该如何安全工作,没有重定向循环?
更新:
我的项目有一个返回地址机制在登录页面。所以当我浏览/Music/1.mp3
时,它将我重定向到/account/login?ReturnUrl=/Music/1.mp3
,登录后根据此机制自动将我重定向到/Music/1.mp3
。我想在这一步我没有足够的访问权限再次打开/Music/1.mp3
!它将我重定向到登录页面,并继续此循环,直到出现ERR_T_OOMANY_REDIRECTS
错误。
即使您将“authenticate mode”设置为none,由于您的web.config具有必需的登录<deny users="?" />
,那么请求会向浏览器发送登录请求,然后它会通过浏览器登录表单询问您。
重定向循环的原因是什么?
由于很多原因可能会发生此错误。最常见的情况是,登录被重定向到用户无法访问的文件夹,即使登录后也是如此。
例如,您的音乐文件夹web.config拒绝登录的用户。然后它将从该文件夹重定向到登录,然后登录将进行身份验证,然后它会将用户发送回该文件夹。一旦该文件夹拒绝所有用户,它将重新返回登录,宾果,这里是你的循环。
您必须确保您不拒绝登录用户。
这应该如何安全工作,没有重定向循环?
从登录重定向后,服务器将传递所需的.mp3文件。
请注意,使用MVC时,您必须确保项目中的文件夹不总是与用户在URL中键入的路径相匹配。对于MVC Core应用程序,这些内容必须位于wwwroot文件夹中。
是的,问题是:拒绝登录的用户在音乐文件夹中的原因是什么? web.config文件中没有关于Music文件夹的任何位置配置。 – RAM