Есть ли способ использовать атрибут [Authorize] в условии в CS HTML страницы бритвы? - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю над приложением do tnet core / js, в котором весь код внешнего интерфейса, включая страницу аутентификации, создается на основе JS, в которой связанный интерфейс внедряется в одну страницу Razor. Все интерфейсы получают доступ к tnet core logi c из конечных точек контроллера api. Аутентификация использует токены-носители, а [Authorize (role = 'what')] используется в нескольких контроллерах.

По какой-то причине один плагин javascript внедряется в приложение со страницы бритвы. Мне в основном нужно, чтобы этот плагин не был виден до того, как пользователь будет аутентифицирован. Это не вопрос «секретного» контента, но плагин просто бесполезен, пока пользователь не аутентифицирован. Есть ли простой способ узнать, авторизован ли пользователь в CS HTML кода, как с атрибутами контроллера? Я искал вокруг и не нашел ничего очень полезного. Не эксперт по c# или ядру tnet (в основном работающий на внешнем интерфейсе), и было бы желательно самое простое решение. Не знаю, пропустил ли я какую-либо соответствующую информацию. Если это так, скажите мне!

1 Ответ

0 голосов
/ 07 апреля 2020

В зависимости от сложности вашего состояния, у вас есть несколько способов авторизации пользователя.

Если вы просто хотите убедиться, что пользователь аутентифицирован , т.е. что он успешно войдя в систему, независимо от того, кто пользователь, то вы можете просто проверить User.Identity.IsAuthenticated:

@if (User.Identity.IsAuthenticated)
{
    <p>User is signed in.</p>
}

Если вы хотите убедиться, что пользователь имеет специфицированную c роль , тогда вы также можете напрямую работать с User главным объектом и просто проверить эту специфицированную c роль:

@if (User.IsInRole("role-name"))
{
    <p>User is in role <em>role-name</em>.</p>
}

В противном случае, если вы Если вы хотите использовать все возможности системы авторизации в ASP. NET Core, вы также можете внедрить IAuthorizationService и авторизовать пользователя в соответствии с настроенной политикой авторизации :

@inject IAuthorizationService _authorizationService

@if ((await _authorizationService.AuthorizeAsync(User, "policy-name")).Succeeded)
{
    <p>User was authorized against policy <em>policy-name</em>.</p>
}
...