[英]ASP.NET Core - JwtBearer 2.0.0
我正在尝试在ASP.NET Core Web API中实现JWT。 在JwtBearer的1.1.2版本中,我的Startup.cs文件中包含以下代码:
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<JwtSettings>(Configuration.GetSection("jwt"));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
var jwtSettings = app.ApplicationServices.GetService<JwtSettings>();
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = jwtSettings.Issuer; // "http://localhost:5000"
ValidateAudience = false,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)) // some secret Key
}
});
app.UseMvc();
}
此代码在JwtBearer 2.0.0中的外观如何?
我这样安装了这个软件包:
dotnet添加软件包Microsoft.AspNetCore.Authentication.JwtBearer
我的.NET Core版本:
2.0.0
基于以上代码,您需要将其重构为dotnet core 2.0,如下所示...根据您的要求进行调整,这是在运输过程中的快速解答。
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o => {
o.Audience = Configuration.GetSection("jwt:Audience").Value;
o.Authority = Configuration.GetSection("jwt:Authority").Value;
o.RequireHttpsMetadata = Configuration.GetValue<bool>("jwt:RequireHttps");
o.Events = new JwtBearerEvents()
{
OnAuthenticationFailed = c =>
{
c.NoResult();
c.Response.StatusCode = 401;
return c.Response.WriteAsync("Invalid Token");
}
};
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// ...
app.UseAuthentication();
// ...
app.UseMvc();
}
这可以为您工作:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<JwtSettings>(Configuration.GetSection("jwt"));
var provider = services.BuildServiceProvider();
var jwtSettings = provider.GetService<JwtSettings>();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o =>
{
o.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = jwtSettings.Issuer;
ValidateAudience = false,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)) // some secret Key
};
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
....
app.UseAuthentication();
app.UseMvc();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.