Warum benötigt Hangfire eine Authentifizierung, um das Dashboard anzuzeigen

Ich führe HangFire in meiner MVC-Webanwendung aus, versuche jedoch immer, zu @ zu navigierehttp: // MyApp / hangfire, leitet mich zur Anmeldeseite meiner App weiter, als wäre ich nicht angemeldet.

Ich habe keine Anforderungen für die Autorisierung explizit konfiguriert ... z. Ich hatte das Folgende in der web.config, habe es dann aber herausgenommen, um dies zum Laufen zu bringen.

<location path="hangfire">
<system.web>
  <authorization>
    <allow roles="Administrator" />
    <deny users="*" />  
  </authorization>
</system.web>

heoretisch ist dies das, was ich möchte, und wenn ich mich bei meiner Hauptwebanwendung anmelde, werde ich mit einem @ angemeldeAdministrator Rolle, damit diese Regel funktioniert.

Aber ob ich das in der web.config konfiguriert habe oder nicht, wenn ich versuche zu @ zu navigierhttp: // MyApp / hangfire, leitet mich zu meiner Anmeldeseite für Apps weiter, wie in der web.config konfiguriert:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="960" />
</authentication>

Dies geschieht NICHT auf meinem lokalen Computer, nur wenn ich auf meinem Host veröffentliche. Erkennt HangFire das Authentifizierungscookie, das meine Hauptanwendung beim Anmelden bereitstellt, nicht? Ich dachte im Allgemeinen, dass die Hangfire-App keine Authentifizierung erfordert. Welche andere Konfiguration könnte dies vermuten?

UPDATE 1:

Ich habe die Berechtigungsfilter gemäß @ hinzugefüghangfire docs, aber das gleiche passiert. Hier ist mein Code in Startup.cs:

using Hangfire;
using Hangfire.Logging;
using Hangfire.Dashboard;
using Hangfire.SqlServer;
using Microsoft.Owin;
using OTIS.Web.AppCode;
using OTISScheduler.AppServ;
using Owin;
using System.Web.Security;

[assembly: OwinStartup(typeof(OTIS.Web.App_Start.Startup))]
namespace OTIS.Web.App_Start
{
    public class Startup
    {
        public void Configuration(IAppBuilder app) {

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

                //Dashboard authorization
                config.UseAuthorizationFilters(new AuthorizationFilter
                {
                    Users = "USERA", // allow only specified users (comma delimited list)
                    Roles = "Account Administrator, Administrator" // allow only specified roles(comma delimited list)
                });


            });

            LogProvider.SetCurrentLogProvider(new StubLogProviderForHangfire());

            GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 0 });

            var scheduleTasksInitializer = new ScheduleTasksInitializer();

            scheduleTasksInitializer.ScheduleTasks();
        }
    }
}

UPDATE 2:

Per desto mehr detaillierte Anweisungen zur grundlegenden Authentifizierung, Ich habe es auch versucht ... immer noch kein Glück..leitet mich zur Anmeldeseite meiner App.

config.UseAuthorizationFilters(
new BasicAuthAuthorizationFilter(
    new BasicAuthAuthorizationFilterOptions
    {
        // Require secure connection for dashboard
        RequireSsl = false,
        SslRedirect = false,

        // Case sensitive login checking
        LoginCaseSensitive = true,

        // Users
        Users = new[]
        {
            new BasicAuthAuthorizationUser
            {
                Login = "MyLogin",

                // Password as plain text
                PasswordClear = "MyPwd"
            }
        }
    }));          

Antworten auf die Frage(6)

Ihre Antwort auf die Frage