Browse Source

Fix Razor Pages antiforgery validation when `NormalizeUserIdClaimIssuer` is enabled

pull/25669/head
Ahmet Çelik 1 month ago
parent
commit
57f54edde5
  1. 4
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs
  2. 30
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AntiForgery/AbpRazorPagesAntiforgeryConfiguration.cs

4
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcModule.cs

@ -240,6 +240,10 @@ public class AbpAspNetCoreMvcModule : AbpModule
}
});
context.Services
.AddOptions<RazorPagesOptions>()
.PostConfigure(AbpRazorPagesAntiforgeryConfiguration.Configure);
context.Services
.AddOptions<RazorPagesOptions>()
.PostConfigure<IOptions<AbpRequestLocalizationOptions>>((pagesOptions, abpLocOptions) =>

30
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AntiForgery/AbpRazorPagesAntiforgeryConfiguration.cs

@ -0,0 +1,30 @@
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ApplicationModels;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace Volo.Abp.AspNetCore.Mvc.AntiForgery;
public static class AbpRazorPagesAntiforgeryConfiguration
{
public static void Configure(RazorPagesOptions options)
{
options.Conventions.AddFolderApplicationModelConvention("/", ReplaceAntiforgeryFilter);
}
private static void ReplaceAntiforgeryFilter(PageApplicationModel model)
{
for (var i = model.Filters.Count - 1; i >= 0; i--)
{
if (model.Filters[i] is AutoValidateAntiforgeryTokenAttribute)
{
model.Filters.RemoveAt(i);
}
}
if (!model.Filters.Any(f => f is AbpAutoValidateAntiforgeryTokenAttribute))
{
model.Filters.Add(new AbpAutoValidateAntiforgeryTokenAttribute());
}
}
}
Loading…
Cancel
Save