zoukankan      html  css  js  c++  java
  • .net core 中hangfire面板的配置及使用

    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 == "admin" && password == "123")
                {
                    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。并输入用户名和密码后

    可以进入Dashboard

  • 相关阅读:
    静态链接到 MFC 的规则 DLL
    DLLAFX_MANAGE_STATE(AfxGetStaticModuleState())模块状态切换保护
    多线程专题之线程同步(1)
    UVa 4256 Salesmen dp
    nefu 661 Clockwise 水DP+略几何
    10635 Prince and Princess LCS&LIS
    UVa 3882 And Then There Was One 递推无力orz
    UVa 10192 Vacation 字符串dp
    UVa 11584 Partitioning by Palindromes 回文串dp
    UVa 10534 Wavio Sequence LIS
  • 原文地址:https://www.cnblogs.com/dongh/p/15223169.html
Copyright © 2011-2022 走看看