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

enter image description here

另外,如果我改变身份验证模式none,它告诉我喜欢它的提示(即我不会啦!): enter image description here

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文件夹中。

+0

是的,问题是:拒绝登录的用户在音乐文件夹中的原因是什么? web.config文件中没有关于Music文件夹的任何位置配置。 – RAM