Встроенный пользовательский атрибут для утверждений в ASP.NET MVC5 Identity 2

Я использую ASP.NET MVC5, который использует Identity 2. Я хочу ограничить доступ контроллера к пользователям, которые имеют определенные претензии. Я создал свой собственный атрибут, как показано ниже, а также назначил его для действия контроллера MVC.

Есть ли такая встроенная возможность? То есть есть ли какой-нибудь пользовательский атрибут, который я могу использовать для этого вместо того, чтобы писать свой собственный?

[ManagerByClaimAttribute]
public ActionResult CheckLoggedInUserIsManagerByClaimWithAttribute()
{
    // will not get here unless manager claim attribute set 
    //   becasue of custom attribute [ManagerByClaimAttribute]
    return View("CheckLoggedInUserIsManagerByClaimWithAttribute");
}

..

public class ManagerByClaimAttribute : FilterAttribute, IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        var principal = (ClaimsPrincipal) Thread.CurrentPrincipal;
        Claim claims = principal.Claims
            .FirstOrDefault(c => c.Type == "RoleAssigned" &&
                                 c.Value == "managerbyclaim");

        if (claims == null)
        {
            filterContext.Result = new HttpUnauthorizedResult();
        }
    }
}

0 ответов

Другие вопросы по тегам