Вопрос:

Как защитить панель управления MVC Hangfire?

c# visual-studio model-view-controller hangfire

2762 просмотра

3 ответа

14 Репутация автора

Я использую Visual Studio 2013 MVC, и я установил «Hangfire» для выполнения запланированных задач. ( http://hangfire.io/ )

Как защитить страницу веб-мониторинга веб-мониторинга ( http: // localhost / Hangfire ) с помощью пароля?

Спасибо

Автор: Ibrahim Источник Размещён: 19.01.2015 09:11

Ответы (3)


1 плюс

203 Репутация автора

Пожалуйста, ознакомьтесь с документацией

Короче. Вы можете использовать уже созданные фильтры авторизации или реализовать свои собственные

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, который содержит логику, которая вам нужна

Автор: Pavel Nasovich Размещён: 19.01.2015 02:53

0 плюса

640 Репутация автора

Решение

Позвольте мне дать весь код для 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.авторизация: 2.1.0

Автор: Kickass Размещён: 17.11.2015 06:47

0 плюса

4 Репутация автора

Установите это в своем 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;
    }
}
Автор: Damilare Размещён: 13.11.2018 09:41
Вопросы из категории :
32x32