ASP.NET ZERO 学习 HangFire的使用

hangfire 是一个分布式后台执行服务。

官网:http://hangfire.io/

1.启用 hangfire 

 

2.Hangfire可以提供一个面板页面,实时显示所有后台作业的状态,你可以按它自己的文档描述那样配置,默认情况下,所有用户都可以使用这个面板页面,不需要授权

不考虑安全性质的话,可以直接使用

app.UseHangfireDashboard();

考虑安全因素,hangfire继承了OwinMiddleware,在每次请求的时候会去执行IAuthorizationFilter的实现。结合现有系统权限机制的场合

namespace OBOT.Web
{
    public class HangFireAuthorizationFilter : IAuthorizationFilter
    {
        public bool Authorize(IDictionary<string, object> owinEnvironment)
        {
            var context = new OwinContext(owinEnvironment);
            if (context.Authentication.User.Identity.Name != Authorization.Users.User.AdminUserName) { return false; }
            return context.Authentication.User.Identity.IsAuthenticated;
        }
    }
}

配置完毕

当然新版本ABP已经有了解决方案:

你可以用定义在Abp.HangFire包里的AbphangfireAuthorizationFilter类,把它集成到ABP的授权系统里。配置示例:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
    Authorization = new[] { new AbpHangfireAuthorizationFilter() }
});

如果用户已经登录到应用,就会使用这个进行检查,如果你需要一个额外的许可,你可以把许可传入它的构造器:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
    Authorization = new[] { new AbpHangfireAuthorizationFilter("MyHangFireDashboardPermissionName") }
});

注意:UsehangifreDashboard应该在你的Startup类里的授权中间件运行后调用(可能是在最后一行)。否则,授权会一直失败。

可参考官网:http://www.aspnetboilerplate.com/Pages/Documents/Hangfire-Integration

其他参考

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

参考:http://docs.hangfire.io/en/latest/

效果

原文地址:https://www.cnblogs.com/fanxingthink/p/6070551.html