1、定義校驗授權類DyDashboardAuthorizationFilter
/// <summary> /// Hangfire儀表盤配置授權 /// </summary> public class MyDashboardAuthorizationFilter : IDashboardAuthorizationFilter { public bool Authorize([NotNull] DashboardContext context) { var httpContext = context.GetHttpContext(); var header = httpContext.Request.Headers["Authorization"]; if (string.IsNullOrWhiteSpace(header)) { SetChallengeResponse(httpContext); return false; } var authValues = System.Net.Http.Headers.AuthenticationHeaderValue.Parse(header); if (!"Basic".Equals(authValues.Scheme, StringComparison.InvariantCultureIgnoreCase)) { SetChallengeResponse(httpContext); return false; } var parameter = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(authValues.Parameter)); var parts = parameter.Split(':'); if (parts.Length < 2) { SetChallengeResponse(httpContext); return false; } var username = parts[0]; var password = parts[1]; if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password)) { SetChallengeResponse(httpContext); return false; } if (username == "user" && password == "paw") { return true; } SetChallengeResponse(httpContext); return false; } private void SetChallengeResponse(HttpContext httpContext) { httpContext.Response.StatusCode = 401; httpContext.Response.Headers.Append("WWW-Authenticate", "Basic realm=\"Hangfire Dashboard\""); httpContext.Response.WriteAsync("Authentication is required."); } }
2、startup.cs的方法里配置
//啟用hangfire 定時任務 app.UseHangfireServer(); //控制儀表盤的訪問路徑和授權配置 app.UseHangfireDashboard("/hangfire", new Hangfire.DashboardOptions { Authorization = new[] { new MyDashboardAuthorizationFilter() } });
3、瀏覽器打開:http://localhost:port/hangfire。並輸入用戶名和密碼后
可以看到: