diff --git a/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj b/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj
index 4ec9d0a3b5..6b598d0edd 100644
--- a/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj
+++ b/framework/src/Volo.Abp.HangFire/Volo.Abp.HangFire.csproj
@@ -19,6 +19,7 @@
+
diff --git a/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireAuthorizationFilter.cs b/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireAuthorizationFilter.cs
new file mode 100644
index 0000000000..15fbb4f60c
--- /dev/null
+++ b/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireAuthorizationFilter.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Threading.Tasks;
+using Hangfire.Dashboard;
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Authorization.Permissions;
+using Volo.Abp.Users;
+
+namespace Volo.Abp.Hangfire
+{
+ public class AbpHangfireAuthorizationFilter : IDashboardAsyncAuthorizationFilter
+ {
+ private readonly string _requiredPermissionName;
+
+ public AbpHangfireAuthorizationFilter(string requiredPermissionName = null)
+ {
+ _requiredPermissionName = requiredPermissionName;
+ }
+
+ public async Task AuthorizeAsync(DashboardContext context)
+ {
+ if (!IsLoggedIn(context))
+ {
+ return false;
+ }
+
+ if (_requiredPermissionName.IsNullOrEmpty())
+ {
+ return true;
+ }
+
+ return await IsPermissionGrantedAsync(context, _requiredPermissionName);
+ }
+
+ private static bool IsLoggedIn(DashboardContext context)
+ {
+ var currentUser = context.GetHttpContext().RequestServices.GetRequiredService();
+ return currentUser.IsAuthenticated;
+ }
+
+ private static async Task IsPermissionGrantedAsync(DashboardContext context, string requiredPermissionName)
+ {
+ var permissionChecker = context.GetHttpContext().RequestServices.GetRequiredService();
+ return await permissionChecker.IsGrantedAsync(requiredPermissionName);
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireModule.cs b/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireModule.cs
index d69edb0b5d..1628d2f37f 100644
--- a/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireModule.cs
+++ b/framework/src/Volo.Abp.HangFire/Volo/Abp/Hangfire/AbpHangfireModule.cs
@@ -1,10 +1,12 @@
using Hangfire;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
+using Volo.Abp.Authorization;
using Volo.Abp.Modularity;
namespace Volo.Abp.Hangfire
{
+ [DependsOn(typeof(AbpAuthorizationAbstractionsModule))]
public class AbpHangfireModule : AbpModule
{
private BackgroundJobServer _backgroundJobServer;