У меня есть этот атрибут:
[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
для этого атрибута.
как я могу передать аргумент ???