Можно ли использовать async /await в MVC 4 AuthorizeAttribute?

Единственное переопределение, которое я вижу на AuthorizeAttribute в MVC, это public override void OnAuthorization( AuthorizationContext filterContext ), который не подходит для использования с async /await, потому что он не возвращает Task. Есть ли другой способ создать AuthorizeAttribute в MVC, который позволяет использовать async /await?

23 голоса | спросил Evan 16 Mayam14 2014, 02:15:33

3 ответа


0

ASP.NET MVC сегодня не поддерживает асинхронные фильтры. Пожалуйста, проголосуйте .

Однако ASP.NET «vNext» , анонсированный на TechEd на этой неделе, будет поддерживать асинхронные фильтры для MVC.

ответил Stephen Cleary 16 Mayam14 2014, 05:57:35
0

С выпуском ядра asp.net ответ Стивена Клири является правильным и идеальным вариантом, если вы используете последнее ядро ​​asp.net.

Для тех, кто еще не обновился, я смог обойти свою проблему, используя асинхронный HttpModule, который передает состояние в AuthorizationFilter через HttpContext.Items

ответил Evan 15 PM00000040000000331 2017, 16:51:03
0

для тех, кто еще не рад иметь ядро ​​.net, но вы можете использовать этот метод из ASP.NET Web API 2:

Переопределение OnAuthorizationAsync:

public override async Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellation)

например, вы можете вызвать асинхронный сервис webapi следующим образом:

 public override async Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellation)
    {
        await base.OnAuthorizationAsync(actionContext, cancellation);

        if (await IsUserAdminAsync()) /* call any async service */
            return;
        this.HandleUnauthorizedRequest(actionContext);
    }
ответил maliness 29 Maypm18 2018, 15:40:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132