2

我正在使用 Visual Studio 2013 MVC,并安装了“Hangfire”来执行计划任务。( http://hangfire.io/ )

如何使用密码保护 Web 监控 UI 页面 ( http://localhost/Hangfire )?

谢谢

4

3 回答 3

1

请查看文档

简而言之。您可以使用已经创建的授权过滤器或实施您自己的

using Hangfire.Dashboard;

public class MyRestrictiveAuthorizationFilter : IAuthorizationFilter
{
    public bool Authorize(IDictionary<string, object> owinEnvironment)
    {
         // In case you need an OWIN context, use the next line.
         var context = new OwinContext(owinEnvironment);
         return false;
    }
}

附加信息:

您还可以查看包含您需要的逻辑的特殊包 Hangfire.Dashboard.Authorization

于 2015-01-19T14:53:14.833 回答
0

让我给出 RestrictiveAuthorizationFilter 的完整代码:这样您就可以随心所欲地处理授权。

假设您添加了 OWINStartup 类。

OWINStartup.cs

using Owin;
using Hangfire;
using Hangfire.Dashboard;

public class OWINStartup
{
    public void Configuration(IAppBuilder app)
    {        
        GlobalConfiguration.Configuration.UseSqlServerStorage("String");
        DashboardOptions options = new DashboardOptions()
        {
            AuthorizationFilters = new IAuthorizationFilter[]
            {
                new MyRestrictiveAuthorizationFilter()
            }
        };
        app.UseHangfireDashboard("/hangfire", options);
    }
}

RestrictiveAuthorizationFilter.cs

using Hangfire.Dashboard;
using System.Collections.Generic;
using Microsoft.Owin;

public class MyRestrictiveAuthorizationFilter : IAuthorizationFilter
{
    public bool Authorize(IDictionary<string, object> owinEnvironment)
    {
        var context = new OwinContext(owinEnvironment);

        return context.Authentication.User.Identity.IsAuthenticated;
    }
}

注意:使用 System.Collections。通用;

参考资料: https ://github.com/HangfireIO/Hangfire/issues/202

https://media.readthedocs.org/pdf/hangfire/latest/hangfire.pdf(第20页)

Hangfire.Dashboard.Authorization 版本:2.1.0

于 2015-11-17T18:47:53.103 回答
0

在您的 Startup.Cs 中进行设置

  public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        //TODO
        app.UseHangfireDashboard("/hangfire", new DashboardOptions
        {
            Authorization = new[] { new MyAuthorizationFilter() }
        });
        app.UseHangfireDashboard();
        var options = new BackgroundJobServerOptions { WorkerCount = 1 };
        app.UseHangfireServer(options);    }

创建这个类,它允许经过身份验证的用户看到仪表板

public class MyAuthorizationFilter : IDashboardAuthorizationFilter
{
    public bool Authorize(DashboardContext context)
    {
        var httpContext = context.GetHttpContext();

        // Allow all authenticated users to see the Dashboard (potentially dangerous).
        return httpContext.User.Identity.IsAuthenticated;
    }
}
于 2018-11-13T09:41:42.557 回答