Как настроить по умолчанию Windows AutheticationStateProvider в приложении Blazor Server?C#

Место общения программистов C#
Anonymous
 Как настроить по умолчанию Windows AutheticationStateProvider в приложении Blazor Server?

Сообщение Anonymous »

У меня есть приложение Blazor Server, которое использует аутентификацию Windows для идентификации пользователей.
Приложение «обнаруживает» пользователь в настоящее время просматривает приложение и может правильно отображать домен /имя пользователя. < /p>
Я написал класс, который проверяет зарегистрированные в имени пользователя и получает роли из базы данных, а затем обновляет текущий принципал, чтобы пользовательский интерфейс мог правильно воспользоваться данными роли для Пользователь. p>

Код: Выделить всё

public class CompanyAuthentication
{
public CompanyAuthentication(AuthenticationStateProvider auth)
{
var result = auth.GetAuthenticationStateAsync().Result;
// here I have access to the current username:
string username = result.User.Identity.Name;
// now I can fetch roles from file, but for simplicity, I will use the following:
if(username.BeginsWith("admin"))
{
var claims = new ClaimsIdentity(new Claim[] {new Claim(ClaimType.Role, "admin")});
result.User.AddIdentity(claims);  // this will have an effect on UI
}

}
}
< /code>
Я также добавил приведенный выше класс в качестве службы в startup.cs < /p>
services.AddScoped();
< /code>
Теперь, на любой странице бритвы, я просто делаю: < /p>
@page "/counter"
@inject CompanyAuthentication auth


 Welcome admin 
 You are not authorized 

Это все работает нормально, если я не забываю внедрить компанию -контроль на каждой странице, которую я собираюсь использовать.
Есть ли способ автоматически ввести мой класс на каждую страницу без необходимости выполнять @Inject ?
Мне известно, что я могу написать пользовательский класс аутентификации, который наследует AuthenticationStateProvider , а затем добавить его как Сервис, но если я это сделаю, я потеряю доступ к в настоящее время введенном в настоящее время в имени пользователя, и, таким образом, я не могу получить роли из базы данных. < /p>
Я попытался использовать httpcontext.current. User.identity.name Но это не в сфере приложения в приложении Balzor Server.
Как я могу воспользоваться Windows AuthenticationStateProvider и в то же время настраивайте его роли, не вводясь настройку повсюду?

Подробнее здесь: https://stackoverflow.com/questions/727 ... server-app

Вернуться в «C#»