我正在使用HangFire来安排工作,但是当我部署到PROD时,网站/ hangfire 网址无效。我收到系统找不到指定的文件错误。
在localhost上,我可以打开URL。
我按照以下网址:http://docs.hangfire.io/en/latest/quick-start.html
任何人都知道我错过了什么。
由于
答案 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")
}
});
......
}