javascript - 加载嵌入式 css 和图像以供未经授权的用户访问时出现问题
问题描述
我在具有 web.config 文件的 asp.net 应用程序中托管了 angularjs 应用程序。我正在使用 ADFS 在此应用程序中实现身份验证和自定义授权。
angularjs 应用程序有文件夹:assets,其中包含所有静态内容,如 css、js、img、字体。还有另一个文件夹错误,其中包含相应错误的 html 页面。auth.html 是位于错误文件夹中的页面。
在 web.config 文件级别,我有以下设置:
<location path="errors/auth.html">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<location path="assets/css">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
<!-- Add Caching Support for contents within folder: assets-->
<system.webServer>
<!--Caching-->
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>
</location>
<location path="assets/fonts">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
<!-- Add Caching Support for contents within folder: assets-->
<system.webServer>
<!--Caching-->
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>
</location>
<location path="assets/img">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
<!-- Add Caching Support for contents within folder: assets-->
<system.webServer>
<!--Caching-->
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>
</location>
<location path="assets/js">
<!-- Add Caching Support for contents within folder: assets-->
<system.webServer>
<!--Caching-->
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>
</location>
我在 IIS 中托管了应用程序,版本为:IIS 版本:10.0.17763.1,文件夹名称为 testapp,在 wwwroot 文件夹中创建。
每当任何未经授权的用户尝试打开应用程序时,我都需要显示包含未经授权的消息详细信息的 auth.html 页面。
在与未经授权的用户进行验证时,我看到没有 css 和图像呈现的 html 页面。即使 auth.html 具有指向 css 和图像的链接,但它们没有被渲染。
auth.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Test Application</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="/assets/img/favicon.ico">
<!-- inject:css -->
<link rel="stylesheet" href="/assets/css/app.css">
<!-- endinject -->
</head>
<header id="main-header" class="navbar navbar-fixed-top error-page-header" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<div class="navbar-brand">
<img src="/assets/img/logo-test.svg" width="92">
</div>
</div>
<nav role="navigation">
<ul class="nav navbar-nav navbar-left">
<li>
<a>Test Application</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
</ul>
</nav>
</div>
</header>
<body>
<div class="error-page">
<h2> You are not authorized to access Test Application.</h2>
</div>
</body>
</html>
全球.asax.cs
protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
if (Thread.CurrentPrincipal.Identity.IsAuthenticated && Thread.CurrentPrincipal is IClaimsPrincipal)
{
if (!((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0].Claims.Exists(c => c.ClaimType == "TestApp_UserAuthorized") || !Convert.ToBoolean(((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0].Claims.Single(c => c.ClaimType == "TestApp_UserAuthorized").Value))
{
//Avoid Redirection for static files (used in Access denied page)
List<string> staticcontentpaths = new List<string>{".css", ".js", ".png", ".gif", ".jpg", ".jpeg", ".ico", ".svg", ".woff", ".ttf"};
string extension = Path.GetExtension(HttpContext.Current.Request.PhysicalPath).ToLower();
if (!staticcontentpaths.Contains(extension))
{
Server.Execute("~/errors/auth.html");
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
}
}
}
任何人都可以通过提供解决此问题的指导来帮助我吗
解决方案
推荐阅读
- python - 如何在这种情况下从多个 csv 文件中读取数据并生成报告?
- amazon-web-services - 是否有任何 shell 命令可以在特定配置文件下设置 aws 凭据
- c - 为什么我不能在 for 循环的初始语句中声明多个变量?
- javascript - discord.js无法读取未定义的属性'get'(client.channels.get())
- php - SQL Select 语句加入
- javascript - 对不同的ID使用相同的函数来显示元素
- css - Javascript 使用转换和不透明度触发 CSS 转换在 Firefox 71 中不起作用
- sorting - 如何从文本文件中打印前 5 个分数
- html - NodeJS从文件选择器加载json而不重新加载网页
- python - 在 ScrolledText 小部件中嵌套 Tkinter 树视图小部件?