Я пытаюсь использовать пользовательские атрибуты для реализации прав авторизации для выполнения метода. Вот что у меня сейчас (я только начинаю с пользовательских атрибутов):
[RequiredUserPermissions(UserPermissions.CanLoginViaSite)]
internal static bool HasDesiredPermissions()
{
//Execute body here if the attribute decorated permissions exist
//for current user tracked as this._user (with permissions as
//this._user.UserPermissions (of type UserPermissions (an enum))
}
//Custom attribute class
[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
internal sealed class RequiredUserPermissionsAttribute : Attribute
{
private readonly UserPermissions _requiredPermission;
public RequiredUserPermissionsAttribute(UserPermissions requiredPermission)
{ this._requiredPermission = requiredPermission; }
public UserPermissions RequiredPermissions
{ get { return _requiredPermission; } }
}
Ближайший вопрос, который я обнаружил в stackoverflow: Использование атрибута для преждевременного возврата из метода . Ответ был бы идеальным, если бы я использовал инфраструктуру asp.net mvc, но, к сожалению, я сейчас нахожусь в службе WCF и реализую весь уровень авторизации, кроме простого входа в базу данных, который у меня есть сейчас (посредством вызова метода WCF), это не так. выполнимо сейчас с точки зрения графика времени.
Я полагаю, PostSharp , вероятно, является наилучшим вариантом, но, опять же, сейчас это невозможно. Я застрял здесь? Должен ли я просто вернуться к этому через Методы, которые принимают enum и возвращают bool. Я с удовольствием изучу подробные / сложные вещи, если это позволит мне реализовать эту функцию через пользовательские атрибуты.
Любая помощь в том, как я могу это сделать, будет высоко оценена.