Jor*_*ald 10 c# asp.net-core-2.0
我了解如何为appsettings.json配置服务并将它们注入控制器.但是,我需要在配置Auth时使用ConfigureServices中的值.我该怎么做?请参阅下面的示例.特别是这一行:
option.clientId = /*Need client Id from appsettings.json*/
Run Code Online (Sandbox Code Playgroud)
码:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<AADSettings>(Configuration.GetSection("AADSettings"));
services.Configure<APISettings>(Configuration.GetSection("APISettings"));
// Add Authentication services.
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
// Configure the OWIN pipeline to use cookie auth.
.AddCookie()
// Configure the OWIN pipeline to use OpenID Connect auth.
.AddOpenIdConnect(option =>
{
option.clientId = /*Need client Id from appsettings.json*/
option.Events = new OpenIdConnectEvents
{
OnRemoteFailure = OnAuthenticationFailed,
};
});
}
Run Code Online (Sandbox Code Playgroud)
小智 24
您可以像这样访问此ConfigureServices方法
var config = Configuration.GetSection("AADSettings").Get<AADSettings>();
option.clientId = config.ClientId;
Run Code Online (Sandbox Code Playgroud)
要使上述代码工作,您需要将带有ClientId的POCO类称为AADSettings作为属性
public class AADSettings
{
public string ClientId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在appsettings.json文件中,您需要有这样的条目
"AADSettings": {
"ClientId": "Client1",
}
Run Code Online (Sandbox Code Playgroud)
假设在您的appsettings.json中,您可以将其放在这样的节点下:
"option": {
"clientId": "example client id"
}
Run Code Online (Sandbox Code Playgroud)
那么您应该可以通过以下代码访问它
option.clientId = Configuration["option:clientId"]
Run Code Online (Sandbox Code Playgroud)
启动.cs:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment)
{
User = Configuration.GetSection("HangfireSettings:UserName").Value,
Pass = Configuration.GetSection("HangfireSettings:Password").Value
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序设置.json:
"HangfireSettings": {
"UserName": "admin",
"Password": "admin"
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5866 次 |
| 最近记录: |