Как реализовать авторизацию на уровне обработчика в asp. net core RazorPages - PullRequest
0 голосов
/ 24 марта 2020

Атрибут Authorize в PageModel недостаточен, поскольку он применяется ко всем обработчикам в этой модели страницы. Я ищу какую-то пользовательскую авторизацию, скажем, «Можно получить доступ, только если возраст старше 18 лет», так как же реализовать это в RazorPages (не MVC)? Есть какое-то аккуратное и ясное решение для этого ??

1 Ответ

1 голос
/ 25 марта 2020

В настоящее время невозможно использовать атрибут Authorize для отдельных обработчиков Razor Page, вы можете отследить запрос функции в здесь .

В качестве обходного пути вы можете ввести IAuthorizationService и выполните авторизацию вручную:

private readonly IAuthorizationService _authorizationService;
public IndexModel(ILogger<PrivacyModel> logger,  IAuthorizationService authorizationService)
{
    _logger = logger;
    _authorizationService = authorizationService;
}

public async Task OnGet()
{

    var isAuthorized = await _authorizationService.AuthorizeAsync(
                                                User, "PolicyName");
    if (!isAuthorized.Succeeded)
    {
        //not pass the authorzation 
    }

}

И создайте политику, чтобы проверить, превышает ли заявленное возрастное требование пользователя 18 лет, как показано здесь .

...