2016-02-09 46 views
3

我在登錄時將所有生成的承載令牌保存到數據庫中。現在我想檢查數據庫中是否存在請求承載,拒絕它。我應該把它放在哪裏?如何使服務器上的不記名令牌失效

請注意,我希望這發生在歐文管道中。 (中的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(),    
     }); 
    } 
} 
相關問題