2017-06-14 8 views
1

Für unsere ASP.Net Anwendung haben wir vor kurzem implementiert Web API Verwendung. Wir verwenden die Bearer-Token-Authentifizierung. Unser Kunde hat die Möglichkeit bestellt, die Token-Ablaufzeit auf der Einstellungsseite zu ändern und in der Datenbank zu speichern. Es gibt kein Problem, das es aus der Datenbank und Wechselzeit zu bekommen in Startup.Auth.csASP.Net Web API, wie Token Ablaufzeit in Laufzeit ändern

static Startup() 
{ 
    SettingsService _settingService = EngineContext.Current.Resolve<SettingsService>(); 
    var hostSettings = _settingService.GetHostSettings(); 
    OAuthServerOptions = new OAuthAuthorizationServerOptions() 
    { 
     AllowInsecureHttp = true, 
     TokenEndpointPath = new PathString("/token"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromHours(hostSettings.ApiTokenExpirationTimeInHours), 
     Provider = new ApplicationOAuthProvider() 
    }; 
} 

aber wir haben die Anwendung jedes Mal, wenn wir Ablaufzeit ändern mögen neu zu starten. Wie ändert man AccessTokenExpireTimeSpan dynamisch ohne Neustart der App?

Antwort

0

Die Lösung dieses Problems war ziemlich einfach. OAuthServerOptions Eigenschaft als statische öffentliche Eigenschaft mit eigenem Setter

public static OAuthAuthorizationServerOptions OAuthServerOptions { get; private set; } 

So OAuth Optionen stehen zur Verfügung außerhalb der Startup Klasse gemacht. Wenn die Host-Einstellungen geändert werden, kann die Verfallszeit frei geändert werden.

Startup.OAuthServerOptions.AccessTokenExpireTimeSpan = TimeSpan.FromHours(hostSettings.ApiTokenExpirationTimeInHours);