Jak używać atrybutu Autoryzuj zarówno na poziomie kontrolera, jak i na poziomie akcji?

Zaimplementowałem własny własny atrybut Autoryzuj.

Atrybut jest stosowany zarówno na poziomie kontrolera, jak i na poziomie akcji.

Oto przykład tego, co muszę zrobić:

[ClaimsAuthorize(Roles = "AdvancedUsers")]
public class SecurityController : Controller
{
    [ClaimsAuthorize(Roles = "Administrators")]
    public ActionResult AdministrativeTask()
    {
        return View();
    }

    public ActionResult SomeOtherAction()
    {
        return View();
    }
}

Obecnie, jeśli użytkownik ma rolę administratora, ale nie rolę AdvancedUsers, nie może wykonać zadania administracyjnego.

Jak mogę zmienić to zachowanie, aby przeprowadzić kontrolę bezpieczeństwa na poziomie akcji, nawet jeśli użytkownik nie jest autoryzowany na poziomie kontrolera?

Na razie jedynym rozwiązaniem, o którym mogę pomyśleć, jest zaimplementowanie 2 atrybutów: jednego do zabezpieczania kontrolerów, drugiego do zabezpieczania działań. Wówczas zagrałbym z właściwością Order, aby najpierw wykonać tę na poziomie akcji.

Jednak wolałbym rozwiązanie z jednym atrybutem, jeśli to możliwe.

questionAnswers(5)

yourAnswerToTheQuestion