Asp.net mvc ASP.NET MVC 4 SPA如何删除重定向到登录页面?

Asp.net mvc ASP.NET MVC 4 SPA如何删除重定向到登录页面?,asp.net-mvc,asp.net-mvc-4,authorization,single-page-application,Asp.net Mvc,Asp.net Mvc 4,Authorization,Single Page Application,我们正在与SPA(MVC4+angularjs)网站合作,我们希望拒绝未经授权的访问者访问静态文件。 当前,对该静态文件的所有请求都会重定向到登录页面。我们希望接收401或403错误代码。还可以使用ajax请求这些文件 Rootweb.config: <authentication mode="None"> </authentication> 静态文件文件夹中的Web.config: <configuration> <syste

我们正在与SPA(MVC4+angularjs)网站合作,我们希望拒绝未经授权的访问者访问静态文件。 当前,对该静态文件的所有请求都会重定向到登录页面。我们希望接收401或403错误代码。还可以使用ajax请求这些文件

Rootweb.config

    <authentication mode="None">
    </authentication>

静态文件文件夹中的Web.config:

<configuration>
  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

    <handlers>
      <clear/>
      <add type="System.Web.StaticFileHandler" path="*" verb="*"  name="StaticFileHandler"/>
    </handlers>
  </system.webServer>
</configuration>


我想知道我们如何拒绝未经授权的访问者访问静态文件(不重定向到登录页面)?

我最终得到了以下解决方案:

  • 将web.config添加到静态文件文件夹


    你解决问题了吗?是的,我在下面发布了答案,稍后我将上传基于angularjs+WebApi的SPA web项目模板,并针对MongoDB进行身份验证/授权。
    <configuration>
      <system.web>
        <authorization>
          <deny users="?"/>
        </authorization>
      </system.web>
      <system.webServer>
        <handlers>
          <clear/>
          <add type="System.Web.StaticFileHandler" path="*" verb="*"  name="StaticFileHandler"/>
        </handlers>
      </system.webServer>
    </configuration>
    
    <modules runAllManagedModulesForAllRequests="false">   
      <add 
        name="SuppressRedirect" 
        type="Web.Common.Modules.SuppressRedirectModule, Web.Common"/>
    </modules>
    
    using System;
    using System.Web;
    
    namespace Web.Common.Modules
    {
        public class SuppressRedirectModule : IHttpModule
        {
            public void Init(HttpApplication context)
            {
                context.AuthenticateRequest += this.OnEndRequest;
            }
    
            private void OnEndRequest(object sender, EventArgs eventArgs)
            {
                HttpContext context = ((HttpApplication)sender).Context;
                context.Response.SuppressFormsAuthenticationRedirect = true;
            }
    
            public void Dispose()
            {
            }
        }
    }