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

时间:2017-06-14 13:42:52

标签: c# asp.net asp.net-web-api authorization bearer-token

对于我们的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

1 个答案:

答案 0 :(得分:1)

这个问题的解决方案非常简单。 OAuthServerOptions属性是作为具有私有setter的静态公共属性

public static OAuthAuthorizationServerOptions OAuthServerOptions { get; private set; }

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

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