2016-02-09 2 views
3

Я сохраняю все созданные токены-носители в базе данных во время входа. Теперь я хочу проверить, не существует ли в базе данных носителя запроса, отклонить его. Где я должен это поставить?Как недействить токен-носитель на сервере

Обратите внимание, что я хочу, чтобы это произошло в трубопроводе Owin. (Не в трубопроводе WebAPI Например внутри атрибута [Authorize].)

ответ

1

Наследовать от OAuthBearerAuthenticationProvider так:

public class ApplicationOAuthBearerAuthenticationProvider : OAuthBearerAuthenticationProvider 
{  

    public override Task ValidateIdentity(OAuthValidateIdentityContext context) 
    {    
     var result= base.ValidateIdentity(context); 

     if (context.IsValidated) 
     { 
      var ticket = context.Ticket; 

      if (ticket != null && ticket.Identity.IsAuthenticated && ticket.Properties.ExpiresUtc > DateTime.UtcNow) 
      { 
       if (1==2)//TODO: put your server side condition here 
       { 
        context.SetError("HaHa!"); 
       } 
      } 

     } 

     return result; 

    } 

} 

и использовать его в startup.cs классе, как это:

public partial class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions 
     { 
      Provider = new ApplicationOAuthBearerAuthenticationProvider(),    
     }); 
    } 
} 
Смежные вопросы