From 868ce85c9d564ccd4e81dd6e0370b3a5f691ecc0 Mon Sep 17 00:00:00 2001 From: Salih Date: Thu, 4 May 2023 17:48:00 +0300 Subject: [PATCH] Replaced NonceHtmlHelper with AbpNonceTagHelper --- .../TagHelpers/Script/AbpNonceTagHelper.cs | 23 +++++++++++++++++++ .../AspNetCore/Security/NonceHtmlHelper.cs | 20 ---------------- 2 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Script/AbpNonceTagHelper.cs delete mode 100644 framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/NonceHtmlHelper.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Script/AbpNonceTagHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Script/AbpNonceTagHelper.cs new file mode 100644 index 0000000000..02431c616a --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Script/AbpNonceTagHelper.cs @@ -0,0 +1,23 @@ +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.AspNetCore.Mvc.ViewFeatures; +using Microsoft.AspNetCore.Razor.TagHelpers; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Script; + + +[HtmlTargetElement("script", Attributes = "abp-nonce")] +public class AbpNonceTagHelper : AbpTagHelper +{ + [HtmlAttributeNotBound] + [ViewContext] + public ViewContext ViewContext { get; set; } + + public override void Process(TagHelperContext context, TagHelperOutput output) + { + output.Attributes.RemoveAll("abp-nonce"); + if (ViewContext.HttpContext.Items.TryGetValue(AbpAspNetCoreConsts.ScriptNonceKey, out var nonce) && nonce is string nonceString && !string.IsNullOrEmpty(nonceString)) + { + output.Attributes.Add("nonce", nonceString); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/NonceHtmlHelper.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/NonceHtmlHelper.cs deleted file mode 100644 index 42ce396386..0000000000 --- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Security/NonceHtmlHelper.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Microsoft.AspNetCore.Html; -using Microsoft.AspNetCore.Mvc.Rendering; -using Microsoft.AspNetCore.Mvc.ViewFeatures; - -namespace Volo.Abp.AspNetCore.Security; - -public static class NonceHtmlHelper -{ - public static IHtmlContent ScriptWithNonce(this HtmlHelper htmlHelper, string scriptUrl) - { - var tagBuilder = new TagBuilder("script"); - tagBuilder.Attributes.Add("src", scriptUrl); - if(htmlHelper.ViewContext.HttpContext.Items.TryGetValue(AbpAspNetCoreConsts.ScriptNonceKey, out var nonce) && nonce is string nonceString && !string.IsNullOrEmpty(nonceString)) - { - tagBuilder.Attributes.Add("nonce", nonceString); - } - - return tagBuilder; - } -} \ No newline at end of file