Задать вопрос

Как получить имя метода из примененного к нему атрибута?

Есть ли возможность получить имя метода ("Edit") в атрибуте MyAuthorizeAttribute?

public class MyAuthorizeAttribute : AuthorizeAttribute
{
  public MyAuthorizeAttribute() : base()
  {
    var s1 = ...;
    Debug.WriteLine($"Method name: {s1}");
  }
}


[MyAuthorize]
[HttpGet("edit/{id:int}")]
public override ActionResult Edit(int id)
{
  return base.Edit(id);
}
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@Voland69
Конкретно в AuthorizeAttribute вам доступен AuthorizationFilterContext, в котором есть RouteData.
По ключу action как раз будет имя метода, который будет вызываться в данный момент при успешном прохождении авторизации.

UPD: для этого атрибут должен реализовывать IAuthorizationFilter
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace Microsoft.AspNetCore.Mvc.Filters
{
    /// <summary>
    /// A filter that confirms request authorization.
    /// </summary>
    public interface IAuthorizationFilter : IFilterMetadata
    {
        /// <summary>
        /// Called early in the filter pipeline to confirm request is authorized.
        /// </summary>
        /// <param name="context">The <see cref="AuthorizationFilterContext"/>.</param>
        void OnAuthorization(AuthorizationFilterContext context);
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Никак. Атрибуты это мета информация и отдается она только по запросу
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы