Создание пользовательского атрибута AuthorizeAttribute в веб-API (.Net Framework)C#

Место общения программистов C#
Ответить
Anonymous
 Создание пользовательского атрибута AuthorizeAttribute в веб-API (.Net Framework)

Сообщение Anonymous »

Я использую OAuth2.0 Owin (предоставление пароля) в своем WebAPI. Мой первоначальный ответ токена выглядит следующим образом
{
"access_token": "_ramSlQYasdsRTWEWew.....................",
"token_type": "bearer",
"expires_in": 17999,
"permissions": {
"user": [
"Add",
"Update",
"Delete"
],
"Product": [
"Read",
"Create"
]
}
}

Я настроил ответ, создав новый ключ с именем Permissions, который содержит привилегии для соответствующего пользователя.
Отсюда мне нужно проверять каждый запрос с моего сервера ресурсов, проверяя, имеет ли пользователь достаточно разрешений для вызова API с использованием атрибута авторизации.
Я нашел аналогичный пример здесь, где речь идет о Dot net Core, который не подходит для моего случае.
Сложность заключается в том, что разрешение JSON Key само по себе составляет комплекс с ArrayList
[CustomAuthorize(PermissionItem.Product, PermissionAction.Read)]
public async Task Index()
{
return View(Index);
}

public class CustomAuthorize : AuthorizeAttribute {
public AuthorizeAttribute (PermissionItem item, PermissionAction action) {
//Need to initalize the Permission Enums
}
public override void OnAuthorization (HttpActionContext actionContext) {
//Code to get the value from Permissions ArrayList and compare it with the Enum values
}
}

Это моя идея. Но из-за сложности сравнения ключей и Enum я не могу двигаться дальше.
Кроме того, если разрешение для пользователя — «Добавить», а также «Обновить», означает ли это, что мне нужно создать два условия атрибута перед моим контроллером?
Например:
[CustomAuthorize(PermissionItem.User, PermissionAction.Add)]
[CustomAuthorize(PermissionItem.User, PermissionAction.Update)]

Это приводит к добавлению дополнительных строк атрибутов. Итак, есть ли способ сделать это как в одном условии с разделением |?
[CustomAuthorize(PermissionItem.User, PermissionAction.Update|PermissionAction.Add)]


Подробнее здесь: https://stackoverflow.com/questions/515 ... -framework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»