diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprAppApiTokenValidator.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprAppApiTokenValidator.cs index aebfabeecd..0b6e9a03b9 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprAppApiTokenValidator.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprAppApiTokenValidator.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Authorization; using Volo.Abp.Dapr; @@ -8,15 +9,23 @@ namespace Volo.Abp.AspNetCore.Mvc.Dapr; public class DaprAppApiTokenValidator : IDaprAppApiTokenValidator, ISingletonDependency { - public virtual void CheckDaprAppApiToken(HttpContext httpContext) + protected IHttpContextAccessor HttpContextAccessor { get; } + protected HttpContext HttpContext => GetHttpContext(); + + public DaprAppApiTokenValidator(IHttpContextAccessor httpContextAccessor) + { + HttpContextAccessor = httpContextAccessor; + } + + public virtual void CheckDaprAppApiToken() { - var expectedAppApiToken = GetConfiguredAppApiToken(httpContext); + var expectedAppApiToken = GetConfiguredAppApiToken(); if (expectedAppApiToken.IsNullOrWhiteSpace()) { return; } - var headerAppApiToken = GetDaprAppApiTokenOrNull(httpContext); + var headerAppApiToken = GetDaprAppApiTokenOrNull(); if (headerAppApiToken.IsNullOrWhiteSpace()) { throw new AbpAuthorizationException("Expected Dapr App API Token is not provided! Dapr should set the 'dapr-api-token' HTTP header."); @@ -28,21 +37,21 @@ public class DaprAppApiTokenValidator : IDaprAppApiTokenValidator, ISingletonDep } } - public virtual bool IsValidDaprAppApiToken(HttpContext httpContext) + public virtual bool IsValidDaprAppApiToken() { - var expectedAppApiToken = GetConfiguredAppApiToken(httpContext); + var expectedAppApiToken = GetConfiguredAppApiToken(); if (expectedAppApiToken.IsNullOrWhiteSpace()) { return true; } - var headerAppApiToken = GetDaprAppApiTokenOrNull(httpContext); + var headerAppApiToken = GetDaprAppApiTokenOrNull(); return expectedAppApiToken == headerAppApiToken; } - public virtual string? GetDaprAppApiTokenOrNull(HttpContext httpContext) + public virtual string? GetDaprAppApiTokenOrNull() { - string apiTokenHeader = httpContext.Request.Headers["dapr-api-token"]; + string apiTokenHeader = HttpContext.Request.Headers["dapr-api-token"]; if (string.IsNullOrEmpty(apiTokenHeader) || apiTokenHeader.Length < 1) { return null; @@ -51,12 +60,16 @@ public class DaprAppApiTokenValidator : IDaprAppApiTokenValidator, ISingletonDep return apiTokenHeader; } - protected virtual string GetConfiguredAppApiToken(HttpContext httpContext) + protected virtual string GetConfiguredAppApiToken() { - var expectedAppApiToken = httpContext + return HttpContext .RequestServices .GetRequiredService() .GetAppApiToken(); - return expectedAppApiToken; + } + + protected virtual HttpContext GetHttpContext() + { + return HttpContextAccessor.HttpContext ?? throw new AbpException("HttpContext is not available!"); } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprHttpContextExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprHttpContextExtensions.cs index a35fbef2dc..15663d0c3c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprHttpContextExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/DaprHttpContextExtensions.cs @@ -10,7 +10,7 @@ public static class DaprHttpContextExtensions httpContext .RequestServices .GetRequiredService() - .CheckDaprAppApiToken(httpContext); + .CheckDaprAppApiToken(); } public static bool IsValidDaprAppApiToken(this HttpContext httpContext) @@ -18,7 +18,7 @@ public static class DaprHttpContextExtensions return httpContext .RequestServices .GetRequiredService() - .IsValidDaprAppApiToken(httpContext); + .IsValidDaprAppApiToken(); } public static string? GetDaprAppApiTokenOrNull(HttpContext httpContext) @@ -26,6 +26,6 @@ public static class DaprHttpContextExtensions return httpContext .RequestServices .GetRequiredService() - .GetDaprAppApiTokenOrNull(httpContext); + .GetDaprAppApiTokenOrNull(); } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/IDaprAppApiTokenValidator.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/IDaprAppApiTokenValidator.cs index b3de839fc5..ed5f281ea8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/IDaprAppApiTokenValidator.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Dapr/Volo/Abp/AspNetCore/Mvc/Dapr/IDaprAppApiTokenValidator.cs @@ -1,10 +1,8 @@ -using Microsoft.AspNetCore.Http; - namespace Volo.Abp.AspNetCore.Mvc.Dapr; public interface IDaprAppApiTokenValidator { - void CheckDaprAppApiToken(HttpContext httpContext); - bool IsValidDaprAppApiToken(HttpContext httpContext); - string? GetDaprAppApiTokenOrNull(HttpContext httpContext); + void CheckDaprAppApiToken(); + bool IsValidDaprAppApiToken(); + string? GetDaprAppApiTokenOrNull(); } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/DaprApiTokenProvider.cs b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/DaprApiTokenProvider.cs index 326d446675..9fbed78204 100644 --- a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/DaprApiTokenProvider.cs +++ b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/DaprApiTokenProvider.cs @@ -12,12 +12,12 @@ public class DaprApiTokenProvider : IDaprApiTokenProvider, ISingletonDependency Options = options.Value; } - public virtual string GetDaprApiToken() + public virtual string? GetDaprApiToken() { return Options.DaprApiToken; } - public virtual string GetAppApiToken() + public virtual string? GetAppApiToken() { return Options.AppApiToken; } diff --git a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprApiTokenProvider.cs b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprApiTokenProvider.cs index 260b0ea709..8366eee8f7 100644 --- a/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprApiTokenProvider.cs +++ b/framework/src/Volo.Abp.Dapr/Volo/Abp/Dapr/IDaprApiTokenProvider.cs @@ -2,6 +2,6 @@ namespace Volo.Abp.Dapr; public interface IDaprApiTokenProvider { - string GetDaprApiToken(); - string GetAppApiToken(); + string? GetDaprApiToken(); + string? GetAppApiToken(); } \ No newline at end of file