#.net-5 #asp.net-core-tag-helpers #authorize
Вопрос:
Я нашел много примеров реализации помощника по тегам, который скрывает элемент, если пользователь не авторизован, но каждый раз мне нужно указывать роли или политики в качестве атрибута. Я хотел бы реализовать помощник по тегу авторизации для тега «a», который считывает роли или политики из действия (или контроллера). Авторизуйте атрибут действия, указанного в атрибуте asp-действие. Пример:
// this link should be rendered only if user has "Manager" role
<a asp-authorize asp-action="Index" asp-controller="Manager">Hello manager</a>
[Authorize(Roles = "Manager")]
public async Task<IActionResult> Index() {
это мой код taghelper:
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output) {
if (string.IsNullOrWhiteSpace(Action)) {
throw new ArgumentException("Action can't be null");
}
if (string.IsNullOrWhiteSpace(Controller)) {
throw new ArgumentException("Controller can't be null");
}
var policy = await AuthorizationPolicy.CombineAsync(_policyProvider, new[] { this });
var authenticateResult = await _policyEvaluator.AuthenticateAsync(policy, _httpContextAccessor.HttpContext);
var authorizeResult = await _policyEvaluator.AuthorizeAsync(policy, authenticateResult, _httpContextAccessor.HttpContext, null);
if (!authorizeResult.Succeeded) {
output.SuppressOutput();
}
}
Как я могу это сделать?