美好的一天,是否可以在OWIN中动态更新CORS策略?我现在设置CORS策略的方案是在启动期间。
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//here is the part where I update the CORS policy
ConfigureCors(app);
ConfigureAuth(app);
}
}
public partial class Startup
{
/// <summary>
/// Cors Policy
/// </summary>
/// <returns></returns>
public void ConfigureCors(IAppBuilder app)
{
app.UseCors(new CorsOptions
{
PolicyProvider = new AuthCorsPolicy()
});
}
/// <summary>
/// Auth Cors Policy
/// </summary>
public class AuthCorsPolicy : ICorsPolicyProvider
{
//This method will get all the apps url in the database and add it in CORS and will only allow those url to connect to auth
public Task<CorsPolicy> GetCorsPolicyAsync(IOwinRequest request)
{
var policy = new CorsPolicy
{
AllowAnyMethod = true,
AllowAnyHeader = true
};
var dbContext = WebApiApplication.Container.Resolve<IAuthDbContext>();
var urls = dbContext.Apps.Select(x => x.Url).Distinct().ToList();
foreach (var url in urls)
{
policy.Origins.Add(url);
}
return Task.FromResult(policy);
}
}
/// <summary>
/// Get Cors
/// </summary>
/// <returns></returns>
public Task<CorsPolicy> GetCors()
{
var policy = new CorsPolicy();
var dbContext = WebApiApplication.Container.Resolve<IAuthDbContext>();
var apps = dbContext.Apps.Select(x => x.Url).Distinct().ToList();
foreach (var app in apps)
{
policy.Origins.Add(app);
}
return Task.FromResult(policy);
}
}
如您所见,我从dbContext获取了所有url。我现在面临的情况是可以更新dbContext.Apps中的Url。有没有办法我还可以更新CORS策略而无需重启服务器?谢谢你,美好的一天。