ハングファイアのURLを閲覧しようとしているユーザーを権限のないページにリダイレクトできますか? 私はstartup.csファイルに次のページを持っています。asp.net mvc5アプリケーションでhangfireの認証が失敗した場合、エラーページにリダイレクト
public void Configuration(IAppBuilder app)
{
String conn = System.Configuration.ConfigurationManager.
ConnectionStrings["conn"].ConnectionString;
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
GlobalConfiguration.Configuration
.UseSqlServerStorage(conn,
new SqlServerStorageOptions { QueuePollInterval = TimeSpan.FromSeconds(1) });
//BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget!"));
//app.UseHangfireDashboard();
app.UseHangfireDashboard("/Admin/hangfire", new DashboardOptions
{
Authorization =new[] { new DashboardAuthorizationFilter() }
});
//app.MapHangfireDashboard("/hangfire", new[] { new AuthorizationFilter() });
app.UseHangfireServer();
//start hangfire recurring jobs
HangFireServices service = new HangFireServices();
//service.StartArchive();
service.StartDelete();
}
HangFireServicesは仕事を持っています
public void StartDelete()
{
List<KeyValuePair<string, int>> c = _service.GetServiceRetention();
foreach (var obj in c)
{
RecurringJob.AddOrUpdate(DELETE_SERVICE + obj.Key,() =>
Delete(obj.Key), //this is my function that does the actual process
Cron.DayInterval(Convert.ToInt32(obj.Value)));
}
}
認証コードは次のとおりです。
public class DashboardAuthorizationFilter : IDashboardAuthorizationFilter
{
public bool Authorize(DashboardContext context)
{
//TODO:Implement
return false;
}
}
デフォルトページが異なる承認クラスが設定されているホームページです。ユーザーはdbごとに承認ルールに失敗し、UnAuthorizedControllerのインデックスページにリダイレクトされます。ユーザーが/ hangfireを指すようにURLを手動で変更した場合、返される権限はfalseであるため、空白のページが表示されますが、UnAuthorizedControllerのインデックスページにリダイレクトします。
明確にするために、ユーザーには常に「401」ページが表示されるようにしたいのですか、またはそれらがHangfire UIにログインできない場合にのみ表示しますか? – G0dsquad
ユーザーが承認に失敗した場合のみ、401またはカスタムエラーページを表示しますか? – anu
私はweb.configの 'httpError'エントリでこれを試しましたが、ログイン失敗時でさえ何らかの理由でこれを無視するようです。うまくいけば、誰かがこれがどのように傍受されるのか知っていたらうれしいです! – G0dsquad