Hangfire實戰--添加DashBoard登錄權限


概述

Hangfire Dashboard為我們提供了可視化的對后台任務進行管理的界面,我們可以直接在這個頁面上對定時任務進行刪除、立即執行等操作,如下圖所示:

 
默認情況下,這個頁面只能在部署Hangfire的機器上進行訪問,想要在其他地方進行訪問,需要配置權限認證模塊:Hangfire.Dashboard.Authorization。

引用安裝

1、項目地址:https://github.com/HangfireIO/Hangfire.Dashboard.Authorization

2、在已經安裝Hangfire基本組件的項目中,通過Nuget程序包管理器添加Hangfire.Dashboard.Authorizaiton或Nuget控制台添加。通過Nuget程序包管理控制台安裝的命令:

  • Install-Package Hangfire.Dashboard.Authorization

使用

在Startup.cs中的Configuration方法中添加以下代碼:

在代碼中的Login和Password后面寫登錄的用戶名和密碼,這樣在下次打開Hangfire的Dashboard時,就會彈出需要輸入用戶名和密碼的窗口了,輸入之后就可了打開Dashboard了

var filter = new BasicAuthAuthorizationFilter(

              new BasicAuthAuthorizationFilterOptions

              {

                  SslRedirect = false,

                  // Require secure connection for dashboard

                  RequireSsl = false,

                  // Case sensitive login checking

                  LoginCaseSensitive = false,

                  // Users

                  Users = new[]

                  {

                        //new BasicAuthAuthorizationUser

                        //{

                        //    Login = "Administrator-1",

                        //    // Password as plain text

                        //    PasswordClear = "test"

                        //},

                        new BasicAuthAuthorizationUser

                        {

                            Login = "×××",//用戶名

                            // Password as SHA1 hash

                            Password = new byte[]{ 0x54, ..., 0xa8 }//密碼

                        }

                  }

              });

            var options = new DashboardOptions

            {

                AuthorizationFilters = new[] {

                    filter

                }

            };

            app.UseHangfireDashboard("/TaskManager", options); //可以改變Dashboard的url

登錄密碼的生成

string password = "<your password here>";

using (var cryptoProvider = System.Security.Cryptography.SHA1.Create())

{

    byte[] passwordHash = cryptoProvider.ComputeHash(Encoding.UTF8.GetBytes(password));

    string result = "new byte[] { " +

        String.Join(",", passwordHash.Select(x => "0x" + x.ToString("x2")).ToArray())

        + " } ";

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM