В основном я пишу свою собственную версию 'RoleProvider' и 'AuthorizeAttribute'. У меня есть Enum (как битовое поле) со списком всех возможных ролей:
namespace myProject.Global
{
[Flags]
enum Roles
{
Viewer = 1,
User = 2,
Admin = 4,
Superadmin = 8
}
}
Мой AuthorizeAttribute работает аналогично существующему. В моей логике я перебираю каждую роль «Авторизованный» и проверяю, принадлежит ли ей пользователь. _rolesSplit - это массив ролей, предоставленных в AuthorizeAttribute для конкретного действия. httpContext.Session ["Roles"] - это целое число, представляющее роли пользователя.
foreach (string roleName in _rolesSplit)
{
if ((httpContext.Session["Roles"] & myProject.Global.Roles[roleName]) == myProject.Global.Roles[roleName]) return true;
}
return false;
Это часть, над которой я не могу работать: APICText.Global.Roles [roleName] . Я новичок в разработке .NET, поэтому я не уверен, как заставить это работать. Мне нужно передать имя роли и получить обратно связанное значение. Как мне это сделать?