Я занят написанием своего собственного пользовательского атрибута для метода действия MyAuthorizeAttribute, я все еще занят написанием кода, вот мой частичный код:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
public new Role Roles;
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (Roles != 0) // Did it this way to see what the value of Roles was
return;
// Here I am going to get a list of user roles
// I'm doing my own database calls
filterContext.Result = new HttpUnauthorizedResult();
}
}
Вот мой список ролей:
public enum Role
{
Administrator = 1,
SuperAdministrator = 2
}
Мой метод действия:
[MyAuthorize(Roles = Role.Administrator|Role.SuperAdministrator)]
public ActionResult Create()
{
return View();
}
Причина, по которой я не использовал Roles = "Administrator, SuperAdministrator", заключалась в том, что роли жестко запрограммированы. Я не хочу, чтобы при смене имени роли менялось 100 мест.
Учитывая мой метод, когда доходит до if (Roles! = 0), тогда общее значение Roles равно 3, как мне проверить, есть ли эти 2 роли в списке ролей пользователя для конкретного пользователя?
Я правильно здесь делаю? Если нет, то как бы я иначе это реализовал? Это не должно быть так, как я это сделал.