Saltar al contenido

¿Por qué Hangfire requiere autenticación para ver el panel?

Si encuentras alguna parte que no comprendes puedes dejarnos un comentario y haremos todo lo necesario de ayudarte tan rápido como podamos.

Solución:

Con las versiones más nuevas deberías usar IDashboardAuthorizationFilter. Con las instrucciones de uso, se verá así:

using System.Web;
using Hangfire.Annotations;
using Hangfire.Dashboard;

namespace Scheduler.Hangfire

    public class HangFireAuthorizationFilter : IDashboardAuthorizationFilter
    
        public bool Authorize([NotNull] DashboardContext context)
        
            //can add some more logic here...
            return HttpContext.Current.User.Identity.IsAuthenticated;

            //Can use this for NetCore
            return context.GetHttpContext().User.Identity.IsAuthenticated; 
        
    

luego en la sección de configuración:

app.UseHangfireDashboard("/jobs", new DashboardOptions() 
      
          Authorization = new [] new HangFireAuthorizationFilter()
      );

Finalmente lo hice funcionar. Creé mi propia clase AuthorizationFilter (ver más abajo). Luego pasé eso al método MapHangfireDashboard en el método de configuración de Startup.cs (ver más abajo)

public class HangFireAuthorizationFilter : IAuthorizationFilter

    public bool Authorize(IDictionary owinEnvironment)
    
        bool boolAuthorizeCurrentUserToAccessHangFireDashboard = false;

        if (HttpContext.Current.User.Identity.IsAuthenticated)
        
            if(HttpContext.Current.User.IsInRole("Account Administrator"))
                boolAuthorizeCurrentUserToAccessHangFireDashboard = true;
        

        return boolAuthorizeCurrentUserToAccessHangFireDashboard;
    

Para asignar hangfire a una URL personalizada y especificar AuthorizationFilter para usar:

public void Configuration(IAppBuilder app) 

    //Get from web.config to determine to fire up hangfire scheduler or not

    app.UseHangfire(config => 
        config.UseSqlServerStorage("DefaultConnection");
        config.UseServer();              
    );

    //map hangfire to a url and specify the authorization filter to use to allow access
    app.MapHangfireDashboard("/Admin/jobs", new[]  new HangFireAuthorizationFilter() );


Valoraciones y comentarios

Tienes la opción de añadir valor a nuestro contenido asistiendo con tu experiencia en las aclaraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *