выполнить проверку авторизации в коде позади - PullRequest
0 голосов
/ 01 марта 2020

На странице блейзора я хочу (показать / скрыть / установить только для чтения / изменить стиль ... и т. Д. c) в текстовом поле, если у пользователя есть определенная политика c для достижения (показать и скрыть) я сделал следующее:

 <AuthorizeView Policy="CanReadNamePolicy">
     <Authorized Context="test">
        <inputText @Bind-Value="@Name"/>
     </Authorized>
 </AuthorizeView>

но проблема, которую я должен повторить это для каждой политики, а также, что, если один и тот же пользователь находится в нескольких политиках

Так что я подумал о перемещении этой логи c к коду позади и используйте атрибуты для установки текстового поля, но я не могу найти, чтобы выполнить проверку авторизации в коде

, поэтому у меня должно быть что-то вроде

 if ((await Authorize("PolicyName")).Succeeded)
 {
    ReadOnlyAttr = "readonly";
 }

любая идея, если возможно, выполнить проверку авторизации в коде

1 Ответ

0 голосов
/ 01 марта 2020

Вот фрагмент кода, как вы можете это сделать:

Если приложение должно проверять правила авторизации как часть процедурной логики c, используйте каскадный параметр типа Task, чтобы получить ClaimsPrincipal пользователя. Задача может быть объединена с другими службами, такими как IAuthorizationService, для оценки политик.

@inject IAuthorizationService AuthorizationService

<button @onclick="@DoSomething">Do something important</button>

@code {
[CascadingParameter]
private Task<AuthenticationState> authenticationStateTask { get; set; }

private async Task DoSomething()
{
    var user = (await authenticationStateTask).User;

    if ((await AuthorizationService.AuthorizeAsync(user, "CanReadNamePolicy"))
        .Succeeded)
    {
        // Perform an action only available to users satisfying the 
        // 'CanReadNamePolicy' policy.
    }
}
}

Примечание:

  1. Компонент InputText должен находиться в компоненте EditForm.
  2. Это @bind-Value, а не @Bind-Value
  3. Политика может оценивать несколько требований ... Вы все еще можете использовать AuthorizeView для оценки нескольких требований в одной политике.
...