首页 > 编程语言 >asp.net core 中hangfire面板的配置及使用

asp.net core 中hangfire面板的配置及使用

时间:2024-05-29 09:56:59浏览次数:12  
标签:core asp return hangfire SetChallengeResponse var false httpContext

Hangfire项目实践分享 - Ecin - 博客园 (cnblogs.com)

 

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。并输入用户名和密码后

可以看到:

 

标签:core,asp,return,hangfire,SetChallengeResponse,var,false,httpContext
From: https://www.cnblogs.com/Andy-Blog/p/18219553

相关文章

  • SslSugar导航查询与EF Core导航查询
    SqlSugar:当我们在SQLSugar中定义了两个实体类之间的关联关系时,可以使用导航属性进行关联查询。导航属性是表示一个实体对象与其他实体对象之间关联的属性。通过导航属性,我们可以方便地在查询中访问和检索相关联的实体数据。在SQLSugar中,导航属性需要满足以下条件:导航属性必须......
  • .net core的WebAPI+Vue2实现调用设备拍照上传图片功能
    在工作中有时候会遇到上传文件上传图片或者拍照上传图片功能。这时候底下的内容就有可能可以帮助到你。后端的支持上传图片和上传文件功能。前端如果你选择普通上传功能就是普通上传功能,我这里选择的是调用相机设备实现拍照上传图片功能。1.首先这是后端的控制器接口。1///<......
  • net core 建立webservice项目
    1、创建项目  2、通过NuGet安装SoapCore 3、创建服务接口及实现类本项目会创建2个webservice服务文件用于测试,所以创建了2个model类和2个接口文件。 Model类:[DataContract]publicclassFactoryModel{///<summary>///工厂号///<......
  • netcore构建webservice以及调用的完整流程
    目录构建前置准备编写服务挂载服务处理SoapHeader调用添加服务调用服务补充内容构建前置准备框架版本要求:netcore3.1以上引入nuget包SoapCore编写服务1.编写服务接口示例usingSystem.ServiceModel;namespaceServices;[ServiceContract(Namespace="http://Demo.WebService......
  • 在 Inno Setup 中检测 .NET 5 / .NET Core 运行环境是否存在
    为了将.NET5/.NETCore应用程序部署到客户机,我们可以编写InnoSetup代码来判断客户机是否安装了必要的运行环境。.NET官方仓库 中提供了一个名为 NetCoreCheck 的项目,可以用于检测指定的.NET5/.NETCore环境是否存在。编译好的文件可以从以下两个地址下载:文件......
  • dotnet c# samples core nativeaot NativeLibrary
     如何在System.Text.Json中使用源生成 https://learn.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json/source-generation?pivots=dotnet-8-0 https://github.com/dotnet/samples/tree/main/core/nativeaot/NativeLibrary   ......
  • 基于.NET Framework 4.8.1的ASP.NET Web用Gitlab Runner调用MSBuild之后没有bin\rosl
    摘要基于.NETFramework4.8.1的传统ASP.NETWeb程序,使用GitlabRunner自动集成,在发布的网站目录下,没有bin\Roslyn文件夹。这里涉及到容易被忽视的Roslyn编译器的知识点。Roslyn是什么?在我们的ASP.NETWeb项目源代码中有什么体现?1、web.config下有配置节点一般在web.config末......
  • 传统的ASP.NET Web Form程序如何使用最新的MSBuild特性
    摘要旧的.csproj文件,在使用NuGet包的时候,会随着引用一个包,一下子添加n多个包。我们把旧的.csproj文件迁移到最新的格式,就能避免这个问题。直接上效果<ProjectToolsVersion="12.0"DefaultTargets="Build"Sdk="Microsoft.NET.Sdk.Web"xmlns="http://schemas.microsoft.com/de......
  • 使用.Net Core开发WPF App系列教程( 八、WPF中的常用控件(下))
    使用.NetCore开发WPFApp系列教程一、.NetCore和WPF介绍二、在VisualStudio2019中创建.NetCoreWPF工程三、与.NetFramework的区别四、WPF中的XAML五、WPF中的布局六、WPF中的常用控件(上)七、WPF中的常用控件(中)八、WPF中的常用控件(下)其它、实现多语言切换的几种方......
  • dot net core使用BackgroundService运行一个后台服务
    不管是在控制台程序还是asp.netcore程序中,我们经常会有用到一个需要长时间运行的后台任务的需求。通常最直觉的方式是使用Thread实例来新建一个线程,但是这样需要自行管理线程的启动和停止。在.netcore中提供了一个继承自IHostedService的基类BackgroudService能够方便地实现一......