Browse Source

Warn if MultiTenancyMiddleware is used before authentication

pull/23264/head
maliming 1 year ago
parent
commit
6a92781d10
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 18
      framework/src/Volo.Abp.AspNetCore.MultiTenancy/Microsoft/AspNetCore/Builder/AbpAspNetCoreMultiTenancyApplicationBuilderExtensions.cs

18
framework/src/Volo.Abp.AspNetCore.MultiTenancy/Microsoft/AspNetCore/Builder/AbpAspNetCoreMultiTenancyApplicationBuilderExtensions.cs

@ -1,12 +1,24 @@
using Volo.Abp.AspNetCore.MultiTenancy;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp.AspNetCore.MultiTenancy;
namespace Microsoft.AspNetCore.Builder;
public static class AbpAspNetCoreMultiTenancyApplicationBuilderExtensions
{
private const string AuthenticationMiddlewareSetKey = "__AuthenticationMiddlewareSet";
public static IApplicationBuilder UseMultiTenancy(this IApplicationBuilder app)
{
return app
.UseMiddleware<MultiTenancyMiddleware>();
var authenticationMiddlewareSet = app.Properties.TryGetValue(AuthenticationMiddlewareSetKey, out var value) && value is true;
if (!authenticationMiddlewareSet)
{
var logger = app.ApplicationServices.GetService<ILogger<MultiTenancyMiddleware>>();
logger?.LogWarning("MultiTenancyMiddleware is being registered before the authentication middleware. " +
"This may lead to incorrect tenant resolution. " +
"Ensure that app.UseAuthentication() is called before app.UseMultiTenancy().");
}
return app.UseMiddleware<MultiTenancyMiddleware>();
}
}

Loading…
Cancel
Save