【发布时间】:2017-10-17 05:49:50
【问题描述】:
我正在尝试保护我的项目下的一个文件夹,该文件夹只有一些静态文件,.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 ();
}
}
也可以通过web.configsystem.webServer下的system.webServer
<handlers>
<add name="StaticFileHandler" verb="GET" path="~/help/default.htm" type="StaticFilesHttpHandler "/>
</handlers>
文件夹中的文件由第 3 方提供。我将在文件夹中的 js 文件中调用一个函数,然后将用户重定向到其子结构内的正确 .htm 文件。我不希望用户能够键入 url 并访问任何文件。我做错了什么?
【问题讨论】:
-
@NightOwl888 摆脱对这些文件的所有访问权限。我仍然希望用户能够访问这些文件,但前提是他们已获得授权。
-
即使我已登录,当我尝试访问该目录时也会拒绝访问。我认为原因是因为我们使用 .NET Identity 进行身份验证。
标签: asp.net-mvc asp.net-mvc-5 iis-7