对于我们的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
?
答案 0 :(得分:1)
这个问题的解决方案非常简单。 OAuthServerOptions
属性是作为具有私有setter的静态公共属性
public static OAuthAuthorizationServerOptions OAuthServerOptions { get; private set; }
因此OAuth选项在Startup
类之外可用。因此,当更改主机设置时,可以自由更改到期时间
Startup.OAuthServerOptions.AccessTokenExpireTimeSpan = TimeSpan.FromHours(hostSettings.ApiTokenExpirationTimeInHours);