0

В моем ASP.NET проект использует экран входа в систему, который позволяет пользователям вводить учетные данные для входа в веб-приложение. В этот момент объект User устанавливается в объекте Session. Объект User содержит информацию о роли пользователя, входящего в систему. Теперь я хочу, чтобы панель инструментов hangfire была ссылкой внутри приложения, видимой после входа пользователя в систему. И после нажатия ссылки на основании, если роль пользователя Я хочу показать или ограничить панель инструментов. Как мне это сделать? Я не могу получить доступ к объекту сеанса в классе OWIN startup.cs.Интеграция панели управления с помощью ASP.NET с использованием приложения ASP.NET

+2

Использование состояния сеанса является ужасный подход. Избегайте этого – Leo

+0

Любые указания на то, как это следует обрабатывать тогда? –

+0

Какое у вас членство и роль поставщика? – Leo

ответ

2

Вы можете ограничить доступ к панели управления, используя IAuthorizationFilter определенный как это:

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

Где IsAuthorizedForDashboard функция вам нужно будет создать.

Затем зарегистрировать фильтр так:

app.UseHangfireDashboard(DashboardPath, 
    new DashboardOptions { 
     AuthorizationFilters = new List<IAuthorizationFilter> { 
      new DashboardAuthorizationFilter() } 
    }); 
Смежные вопросы