我们有 asp.net MVC 和角度应用程序。我们使用 Identityserver3 来控制应用程序的访问。
除了一件事之外,一切都按预期进行。
未经授权的用户仍然可以访问应用程序的静态内容。
有没有办法在用户登录之前拒绝访问这些文件?
这是一篇很棒的文章的链接,它引导我找到了解决方案=>拦截文件请求
我为解决问题所采取的步骤:
-
将此行添加到我的网络配置文件中。
这将确保 js 文件请求不会被处理程序处理。
<system.webServer>
<handlers>
<add name="JSFileHandler" path="*.js" verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
-
登记路线。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.RouteExistingFiles = true;
routes.MapRoute(
"staticfiles"
, "{*src}"
, new { Controller = "Main", action = "GetJS" }
, new { src = @"(.*?)\.(js)" } // URL constraints
);
-
从控制器操作返回文件
public ActionResult GetJS()
{
var path = this.Url.RouteUrl("staticfiles");
return File(path,
System.Net.Mime.MediaTypeNames.Application.Octet,
Path.GetFileName(path));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)