仅向授权用户提供 ASP.NET 中的静态文件
Serving static files in ASP.NET to authorized users only
我正在尝试保护我的项目下的一个文件夹,该文件夹只有一些静态文件,是 .htm
和 .js
文件的组合。我试过创建自定义 HttpHandler
,例如:
public class StaticFilesHttpHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.Request.IsAuthenticated)
{
// continue with the request
}
else
{
throw new HttpResponseException(HttpStatusCode.Unauthorized);
}
}
public bool IsReusable => false;
}
然后通过 Route.Config
注册它以用于路由
routes.RouteExistingFiles = true;
routes.Add("helpRoute", new Route("folder/*.htm", new StaticFilesRouteHandler ()));
和一个路由处理程序来提供
public class StaticFilesRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext context)
{
return new StaticFilesHttpHandler ();
}
}
以及 system.webServer
下的 web.config
<handlers>
<add name="StaticFileHandler" verb="GET" path="~/help/default.htm" type="StaticFilesHttpHandler "/>
</handlers>
文件夹中的文件由第三方提供。我要在文件夹中的 js 文件中调用一个函数,然后将用户重定向到其子结构中的适当 .htm 文件。我不希望用户能够键入 url 并访问任何文件。我做错了什么?
能否将类型更改为 TransferRequestHandler 并确保路径正确。
<handlers>
<add name="StaticFileHandler" verb="GET" path="~/help/default.htm" type="TransferRequestHandler" />
</handlers>
在您的 global.asax 文件中,您可以访问 Application_BeginRequest 中的请求以验证请求是否已通过身份验证。
我正在尝试保护我的项目下的一个文件夹,该文件夹只有一些静态文件,是 .htm
和 .js
文件的组合。我试过创建自定义 HttpHandler
,例如:
public class StaticFilesHttpHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.Request.IsAuthenticated)
{
// continue with the request
}
else
{
throw new HttpResponseException(HttpStatusCode.Unauthorized);
}
}
public bool IsReusable => false;
}
然后通过 Route.Config
routes.RouteExistingFiles = true;
routes.Add("helpRoute", new Route("folder/*.htm", new StaticFilesRouteHandler ()));
和一个路由处理程序来提供
public class StaticFilesRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext context)
{
return new StaticFilesHttpHandler ();
}
}
以及 system.webServer
web.config
<handlers>
<add name="StaticFileHandler" verb="GET" path="~/help/default.htm" type="StaticFilesHttpHandler "/>
</handlers>
文件夹中的文件由第三方提供。我要在文件夹中的 js 文件中调用一个函数,然后将用户重定向到其子结构中的适当 .htm 文件。我不希望用户能够键入 url 并访问任何文件。我做错了什么?
能否将类型更改为 TransferRequestHandler 并确保路径正确。
<handlers>
<add name="StaticFileHandler" verb="GET" path="~/help/default.htm" type="TransferRequestHandler" />
</handlers>
在您的 global.asax 文件中,您可以访问 Application_BeginRequest 中的请求以验证请求是否已通过身份验证。