Override AccessTokenExpireTimeSpan

后端 未结 3 754
后悔当初
后悔当初 2020-12-17 20:33

Is possible to override the default AccessTokenExpireTimeSpan for a specific ticket on a custom OAuthAuthorizationServerProvider? The default expiration time for all other t

相关标签:
3条回答
  • 2020-12-17 21:09
    public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
    // Note: a= how much time u want
        Startup.OAuthOptions.AccessTokenExpireTimeSpan = TimeSpan.FromSeconds(a);
    }
    

    also have many different option like:

    FromDays,FromHours,FromMilliseconds,FromMinutes

    0 讨论(0)
  • 2020-12-17 21:19

    You have to set the expiration time in the TokenEndPoint method instead of GrantResourceOwnerCredentials method:

    public override Task TokenEndpoint(OAuthTokenEndpointContext context)
    {
        ...
    
        if (condition)
        {
            context.Properties.ExpiresUtc = DateTime.UtcNow.AddDays(14);
        }
    
        ...
    }
    

    I hope it helps.

    EDIT

    As pointed by Michael in his response to a similar question, if you have a different AccessTokenExpireTimeSpan for each client_id you can override the default configured AccessTokenExpireTimeSpan in the context options with the client one when validating the client authentication:

    public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        ...
    
        context.Options.AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(client.AccessTokenExpireTime);
    
        ...
    }
    
    0 讨论(0)
  • 2020-12-17 21:24

    This works in the context (ha ha) you have:

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
         context.Options.AccessTokenExpireTimeSpan = YourCustomExpiryTimeHere();
    } 
    

    But note, will need to be updated on every call or the last value you assign will be kept for the next login that occurs.

    0 讨论(0)
提交回复
热议问题