Sono in esecuzione HangFire nel mio MVC web app, ma ogni volta che provo a navigare http://MyApp/hangfire, mi reindirizza alla pagina di login di mia app come se io non sono entrato.Perché Hangfire richiedere l'autenticazione per visualizzare dashboard
I non hanno configurato esplicitamente alcun requisito per l'autorizzazione ... es Ho avuto il sotto nel web.config, ma poi l'ho tolto nei tentativi di farlo funzionare.
<location path="hangfire">
<system.web>
<authorization>
<allow roles="Administrator" />
<deny users="*" />
</authorization>
</system.web>
In teoria, questo è quello che avrei voluto, e quando annoto nel mio applicazione Web principale, sarò il login con un ruolo Administrator
quindi questa regola dovrebbe funzionare.
Ma se ho configurato che nel web.config o no, ogni volta che provo a navigare verso http://MyApp/hangfire, mi reindirizza ai miei apps pagina di login come configurato nel web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="960" />
</authentication>
E ' NON lo fa sul mio computer locale, solo quando pubblico sul mio host. HangFire non riconosce il cookie di autenticazione che la mia app principale fornisce quando effettuo l'accesso? Ho pensato, in generale, che l'app Hangfire non richieda l'autenticazione, quindi quale altra configurazione potrebbe pensare che funzioni?
UPDATE 1:
ho aggiunto i filtri di autorizzazione per l'hangfire docs, ma la stessa cosa accade. Ecco il mio codice 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 più detailed instructions showing basic authentication, ho provato anche questo ... ancora nessun luck..redirects me pagina di login di mia 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"
}
}
}));
Grazie per l'input, ma ho messo che il codice e ancora lo stesso risultato. Non sto usando Autofac o OAuth ... solo l'abbonamento base asp.net basic. Altre idee? –
Per tutti i documenti per dashboard non funzionano al momento, speriamo che sia solo un problema di temperatura. Potresti aggiornare il collegamento? – cpoDesign