использование входного аргумента в атрибуте (Asp Core 3.1) - PullRequest
0 голосов
/ 23 марта 2020

У меня есть этот атрибут:

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class AllowAccessAttribute : Attribute, IAuthorizationFilter
{
    private readonly IDomainUnitOfWork unitofwork;
    private readonly IHttpContextAccessor httpContext;
    private readonly string _name;

    public AllowAccessAttribute(string name)
    {
        _name = name;

    }
    public string Name => _name;
    public AllowAccessAttribute(IDomainUnitOfWork unitofwork, IHttpContextAccessor httpContext)
    {
        this.unitofwork = unitofwork;
        this.httpContext = httpContext;
    }
    public void OnAuthorization(AuthorizationFilterContext context)
    {
        string controller = context.RouteData.Values["controller"].ToString();
        string action = context.RouteData.Values["action"].ToString();
        var userId = httpContext.HttpContext.User.Identity.GetUserId<long>();
        var access = string.Format("{0}:{1}", controller, action);
        if (unitofwork.UserRepository.AccessLevelRepository.ValidateAccess(userId, access) == false)
            context.Result = new StatusCodeResult(403);
    }
}

, и я называю этот атрибут поверх моих действий следующим образом:

[TypeFilter(typeof(AllowAccessAttribute))]

, но у меня есть проблема. Мне нужен аргумент Name для этого атрибута.

как я могу передать аргумент ???

1 Ответ

0 голосов
/ 23 марта 2020

Вы можете использовать свой атрибут следующим образом:

[AllowAccess("name")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...