Авторизация, основанная на представлении

Часто разработчики хотят показать, спрятать или еще как-то изменить UI, основываясь на текущей сущности пользователя. Вы можете получить доступ к сервису авторизации внутри MVC представлений, если внедрите его. Чтобы это сделать, нужно использовать @inject IAuthorizationService AuthorizationService. Если вы хотите, чтобы сервис авторизации был в каждом представлении, включите ключевое слово @inject в файл _ViewImports.cshtml директории Views.

После внедрения сервиса вы можете использовать его, вызвав метод AuthorizeAsync.

@if (await AuthorizationService.AuthorizeAsync(User, "PolicyName"))
{
    <p>This paragraph is displayed because you fulfilled PolicyName.</p>
}

В некоторых случаях ресурсом будет ваша модель представления, и вы можете вызвать AuthorizeAsync:

@if (await AuthorizationService.AuthorizeAsync(User, Model, Operations.Edit))
{
    <p><a class="btn btn-default" role="button"
        href="@Url.Action("Edit", "Document", new {id= Model.Id})">Edit</a></p>
}

Здесь модель передается в качестве ресурса авторизации.

Предупреждение

Не слишком полагайтесь на то, чтобы показать или спрятать часть UI в качестве метода авторизации. Сокрытие UI не гарантирует того, что пользователь не сможет его просмотреть. Также вы должны авторизовать пользователя в коде контроллера.

Поделись хорошей новостью с друзьями!
Следи за новостями!