HangFire仪表板未在PROD中显示

时间:2017-01-04 22:55:39

标签: scheduled-tasks hangfire

我正在使用HangFire来安排工作,但是当我部署到PROD时,网站/ hangfire 网址无效。我收到系统找不到指定的文件错误。

在localhost上,我可以打开URL。

我按照以下网址:http://docs.hangfire.io/en/latest/quick-start.html

任何人都知道我错过了什么。

由于

2 个答案:

答案 0 :(得分:2)

Hangfire Dashboard公开有关后台作业的敏感信息,包括方法名称和序列化参数,并为您提供通过执行不同操作(重试,删除,触发等)来管理它们的机会。因此限制访问权限非常重要到仪表板。

为了使其在默认情况下安全,只允许本地请求,但是您可以通过传递自己的IAuthorizationFilter接口实现来更改此功能,该接口的Authorize方法用于允许或禁止请求。第一步是提供自己的实现。

http://docs.hangfire.io/en/latest/configuration/using-dashboard.html#configuring-authorization

答案 1 :(得分:1)

由于Hangfire仪表板会公开有关您工作的敏感信息,包括方法名称和序列化参数。用户还可以执行不同的操作,例如重试,触发,删除等。因此,验证对仪表板的访问权限非常重要。

默认情况下,Hangfire仅允许对本地请求访问仪表板页面。为了为生产或测试或UAT用户赋予适当的权限,请使用hangfire仪表板的IDashboardAuthorizationFilter接口添加您自己的授权实现。

http://docs.hangfire.io/en/latest/configuration/configuring-authorization.html

请参阅下面的示例代码

public class HangfireAuthorizationFilter : IDashboardAuthorizationFilter
{
    private readonly string[] _roles;

    public HangfireAuthorizationFilter(params string[] roles)
    {
        _roles = roles;
    }

    public bool Authorize(DashboardContext context)
    {
        var httpContext = ((AspNetCoreDashboardContext)context).HttpContext;

        //Your authorization logic goes here.

        return true; //I'am returning true for simplicity
    }
}

Asp.net核心启动类在Configure(IApplicationBuilder app,IHostingEnvironment env)方法中的更改

Configure(IApplicationBuilder app, IHostingEnvironment env){
      ......
        app.UseHangfireServer();
        app.UseHangfireDashboard("/hangfire", new DashboardOptions
        {               
            DashboardTitle = "Sample Jobs",
            Authorization = new[]
            {
                new  HangfireAuthorizationFilter("admin")
            }
        });
      ......
      }