ASP.Net Web Api 如何在运行时更改令牌过期时间

ASP.Net Web Api how to change token expiration time in runtime

对于我们的 ASP.Net 应用程序,我们最近实现了 Web API 用法。我们使用不记名令牌身份验证。我们的客户已经订购了在设置页面上更改令牌到期时间并将其存储在数据库中的机会。从数据库中获取并在Startup.Auth.cs

中更改时间没有问题
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()
    };
}

但是每次要修改过期时间都要重启应用。如何在不重启应用程序的情况下动态修改AccessTokenExpireTimeSpan

这个问题的解决很简单。 OAuthServerOptions 属性 被设为静态 public 属性 和私有 setter

public static OAuthAuthorizationServerOptions OAuthServerOptions { get; private set; }

因此 OAuth 选项在 Startup class 之外可用。所以当主机设置更改时,过期时间可以自由更改

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