0

ASP.NET 프로젝트는 사용자가 웹 응용 프로그램에 로그인하기 위해 자격 증명을 입력 할 수있는 로그인 화면을 사용합니다. 이 시점에서 User 객체는 Session 객체에 설정됩니다. User 객체에는 로그인 한 사용자의 역할에 대한 정보가 들어 있습니다. 이제는 사용자가 로그인하면 표시되는 응용 프로그램 내에서 hangfire 대시 보드를 링크로 표시하고 링크를 클릭하면 사용자 역할이 적절한, 나는 대시 보드를 보여 주거나 제한하고 싶다. 어떻게해야합니까? OWIN startup.cs 클래스의 세션 개체에 액세스 할 수 없습니다.ASP.NET 응용 프로그램 기반 로그인으로 Hangfire 대시 보드 통합

+2

끔찍한 접근법이다. 그것을 피하십시오 – Leo

+0

그때 어떻게 처리되어야하는지에 어떤 포인터? –

+0

회원 및 역할 제공 업체는 무엇입니까? – Leo

답변

2

당신은 다음과 같이 정의 된 IAuthorizationFilter를 사용하여 대시 보드에 대한 액세스를 제한 할 수 있습니다 : IsAuthorizedForDashboard 당신이 작성해야하는 함수가

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; 
    } 
} 

.

는이 같은 필터를 등록 : 세션 상태를 사용

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