0

My ASP.NETプロジェクトでは、Webアプリケーションにサインインするための資格情報を入力できるログイン画面が使用されます。この時点で、UserオブジェクトがSessionオブジェクトに設定されます。ユーザーオブジェクトには、ログインしたユーザーの役割に関する情報が含まれています。ユーザーがログインすると表示されるアプリケーション内のリンクにhangfireダッシュボードを表示します。ユーザーの役割が適切なダッシュボードを表示または制限したい。これはどうすればいいですか? OWIN startup.csクラスのセッションオブジェクトにアクセスできません。 IsAuthorizedForDashboardは、あなたが作成する必要があります関数ですASP.NETアプリケーションベースのログインでHangfire Dashboardを統合

public class DashboardAuthorizationFilter : IAuthorizationFilter 
{ 
    public bool Authorize(IDictionary<string, object> owinEnvironment) 
    { 
     // In case you need an OWIN context, use the next line, 
     // `OwinContext` class is the part of the `Microsoft.Owin` package. 
     //var context = new OwinContext(owinEnvironment); 
     var ok = false; 
     if (HttpContext.Current != null && HttpContext.Current.User != null) 
     { 
      ok = IsAuthorizedForDashboard(HttpContext.Current.User); 
     } 
     return ok; 
    } 
} 

+2

は恐ろしいアプローチです。それを避けてください – Leo

+0

どのようにそれを処理する必要がありますへの任意のポインター? –

+0

メンバーシップと役割提供者は何ですか? – Leo

答えて

2

あなたはIAuthorizationFilterを使用してダッシュボードへのアクセスを制限することができますが、このように定義されました。

次に、このようなフィルタ登録:セッション状態を使用して

app.UseHangfireDashboard(DashboardPath, 
    new DashboardOptions { 
     AuthorizationFilters = new List<IAuthorizationFilter> { 
      new DashboardAuthorizationFilter() } 
    });