Browse Source

Avoid setting cookies multiple times.

pull/9562/head
maliming 5 years ago
parent
commit
c87a34b6f9
  1. 1
      framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpLanguagesController.cs
  3. 24
      framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/AbpRequestLocalizationMiddleware.cs

1
framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/MultiTenancyMiddleware.cs

@ -64,6 +64,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy
context,
requestCulture
);
context.Items[AbpRequestLocalizationMiddleware.HttpContextItemName] = true;
}
await next(context);

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpLanguagesController.cs

@ -33,6 +33,8 @@ namespace Volo.Abp.AspNetCore.Mvc.Localization
new RequestCulture(culture, uiCulture)
);
HttpContext.Items[AbpRequestLocalizationMiddleware.HttpContextItemName] = true;
var context = new QueryStringCultureReplacementContext(HttpContext, new RequestCulture(culture, uiCulture), returnUrl);
await QueryStringCultureReplacement.ReplaceAsync(context);

24
framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/AbpRequestLocalizationMiddleware.cs

@ -10,6 +10,8 @@ namespace Microsoft.AspNetCore.RequestLocalization
{
public class AbpRequestLocalizationMiddleware : IMiddleware, ITransientDependency
{
public const string HttpContextItemName = "__AbpSetCultureCookie";
private readonly IAbpRequestLocalizationOptionsProvider _requestLocalizationOptionsProvider;
private readonly ILoggerFactory _loggerFactory;
@ -29,14 +31,22 @@ namespace Microsoft.AspNetCore.RequestLocalization
_loggerFactory
);
var requestCultureFeature = context.Features.Get<IRequestCultureFeature>();
if (requestCultureFeature?.Provider is QueryStringRequestCultureProvider)
context.Response.OnStarting(() =>
{
AbpRequestCultureCookieHelper.SetCultureCookie(
context,
requestCultureFeature.RequestCulture
);
}
if (context.Items[HttpContextItemName] == null)
{
var requestCultureFeature = context.Features.Get<IRequestCultureFeature>();
if (requestCultureFeature?.Provider is QueryStringRequestCultureProvider)
{
AbpRequestCultureCookieHelper.SetCultureCookie(
context,
requestCultureFeature.RequestCulture
);
}
}
return Task.CompletedTask;
});
await middleware.Invoke(context);
}

Loading…
Cancel
Save