我們有asp.net MVC &角應用程序。我們正在使用identityserver3來對應用程序進行訪問控制。 除了一件事外,一切都按預期工作。 未經授權的用戶仍然可以訪問應用程序的靜態內容。阻止訪問asp.net的靜態內容 - mvc應用程序
在用戶登錄之前是否有任何方式拒絕訪問這些文件?
我們有asp.net MVC &角應用程序。我們正在使用identityserver3來對應用程序進行訪問控制。 除了一件事外,一切都按預期工作。 未經授權的用戶仍然可以訪問應用程序的靜態內容。阻止訪問asp.net的靜態內容 - mvc應用程序
在用戶登錄之前是否有任何方式拒絕訪問這些文件?
這裏是鏈接到偉大的職位而導致我的解決方案=> Intercepting file requests
步驟我已經採取瞭解決我的問題:
將此行添加到我的webconfig文件中。 這將確保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));
}
您可以添加到您的web.config
<location path="your/path/tostaticfiles">
<system.web>
<authorization>
<deny users="?" /> //Denies unauthorized users
</authorization>
</system.web>
</location>
除了位置部分,您還需要指出的是IIS ASP.NET將處理這些文件(runAllManagedModulesForAllRequests = 「真」 )。
下一步(的System.Web節點的兄弟姐妹):
<location path="Scripts">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
在system.webServer節點:
<modules runAllManagedModulesForAllRequests="true">
注: 「?」 使用用戶= 「*」,而不是用戶=如果你不想讓任何用戶訪問你的文件。在我的情況下,我做到了這一點,以防止訪問我的JS文件,我用捆綁服務他們。
使用表單認證它的作用就像一個魅力,但在這種情況下,它似乎沒有任何效果。 – piowtarn
此外,這隻適用於在IIS處理程序映射中將類型映射到.NET的文件。例如,jpg文件不是默認的,IIS會在將請求路由到.NET之前提供它們。 – esmoore68