【问题标题】:How can I publish Hangfire Dashboard for a custom web page?如何为自定义网页发布 Hangfire 仪表板?
【发布时间】:2020-03-16 07:55:08
【问题描述】:

我知道 Hangfire 仅出于安全目的将其仪表板设置为本地。然后,如果我想在自定义域中打开它,我必须为其设置授权。我已按照配置授权指南进行操作,但我不明白我必须在app.UseCookieAuthentication(…) 中写什么。

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{

});

它返回一个错误

找不到 CookieAuthenticationOptions 的命名空间

此代码可能已被弃用并且不起作用。所有关于这个的话题都是几年前的,所以我不知道他们从那时起更新了什么。同时我希望它对所有人开放,所以我真的不需要为任何角色设置身份验证。

【问题讨论】:

  • 配置应用程序的身份验证与配置谁可以访问 hangfire 仪表板不同。您包含的代码片段似乎是您要配置整个应用程序身份验证的部分。顺便说一句,您正在构建什么应用程序类型? ASP.NET 核心?
  • 是的,我正在使用 ASP.NET Core。目前我只想公开访问 Azure 中的hangfire仪表板。我真的不需要任何身份验证。
  • 这能回答你的问题吗? Exposing hangfire without auth

标签: hangfire


【解决方案1】:

正如您在 cmets cmets 中所问的那样,如果您想设置对仪表板的公共访问权限,而不需要在 localhost 上运行应用程序,您需要添加自定义 DashboardAuthorizationFilter,它将始终返回 true(授权任何人获得访问权限)。

为此,请按如下方式创建您的过滤器:

using Hangfire.Dashboard;

namespace your.app.namespace
{
    public class PassThroughDashboardAuthorizationFilter : IDashboardAuthorizationFilter
    {
        /// <inheritdoc />
        public bool Authorize(DashboardContext context) => true;
    }
}

然后将其添加到您的配置中:

        app.UseHangfireDashboard(options: new DashboardOptions
        {
            Authorization = new List<IDashboardAuthorizationFilter>(){ new PassThroughDashboardAuthorizationFilter() },
            IsReadOnlyFunc = context => false // according to your needs
        });

【讨论】:

  • 对不起,这是工作。我只是忘记改变我的连接:D
猜你喜欢
  • 1970-01-01
  • 2021-12-27
  • 2015-03-17
  • 1970-01-01
  • 2011-07-29
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
相关资源
最近更新 更多