我们正在使用SPA(MVC 4 + angularjs)网站,我们希望拒绝为未经授权的访问者访问静态文件。 目前,对此静态文件的所有请求最终都会重定向到登录页面。我们想要收到401或403错误代码。也可以使用ajax请求此文件。
Root web.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>
我想知道我们如何拒绝为未经授权的访问者访问静态文件(重定向到登录页面)?
答案 0 :(得分:2)
我最终得到了这个解决方案:
将 web.config 添加到静态文件文件夹中。
<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>
添加特殊模块(在站点根目录 web.config 中),禁止重定向到登录页面。
<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()
{
}
}
}