如何从.txt文件设置Authorize属性的方案?

时间:2017-12-29 12:03:03

标签: asp.net-mvc asp.net-core-mvc

我的控制器受Authorize属性保护。我想要做的是告诉Authorize属性使用Windows模式或根本没有模式。我怎么做到这一点?

[Authorize(AuthenticationSchemes = AuthSchemes)]
  1. 案例:AuthSchemes =“Windows”
  2. 案例:AuthSchemes =“”
  3. 我想在运行时更改架构,因此管理员可以基本上更改身份验证设置。

1 个答案:

答案 0 :(得分:0)

经过很长一段时间的计算,我已经设法让这个工作,但不是那么优雅。

我决定不使用Authorize属性,而是决定进行自定义身份验证过程。所以基本上我使用自定义身份验证过程将身份验证中间件迁移到ASP.NET CORE 2.0,遵循此资源Migrating authentication middleware to ASP.NET CORE 2.0.

通过这个设置,我创建了一个简单的类,它将在从.json文件中读取时使用:

public class AuthenticationSettings
{
    public string AuthenticatonScheme { get; set; }
    public bool Enabled { get; set; }
}

我还制作了一个.json文件,其中包含我们的应用程序应该使用Windows身份验证的天气信息。读取文件发生在ConfigureServices()方法的Startup类中。如果windows设置为true,我们创建自定义策略(我们的方案现已设置),然后全局应用:

services.AddAuthorization(o =>  // we create policy with our custom sheme
{
    o.AddPolicy("WinPolicy", b =>
    {
       b.RequireAuthenticatedUser();
       b.AuthenticationSchemes = new List<string> { auth_settings.AuthenticatonScheme }; // here we set the windows scheme
    });
});
services.AddMvc(o =>
{
       o.Conventions.Add(new AddAuthorizeFiltersControllerConvention()); // we apply the policy
});