110,536
社区成员
发帖
与我相关
我的任务
分享
#region 注册认证服务
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(o =>
{
o.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = "Issuer",
ValidAudience = "Audience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("JwtAuth:SecurityKey")),
RequireSignedTokens = true,
ValidateAudience = false,
ValidateIssuer = true,
ValidateIssuerSigningKey = true,
RequireExpirationTime = true,
ClockSkew = TimeSpan.FromSeconds(300),
ValidateLifetime = true
};
});
#endregion
app.UseAuthentication().UseMvc();
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme,Policy = "xxxxx")]
public class XXXController : Controller
{
//do....
}
AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme
去掉就会认证失败,之前的项目中一样的写法没加过这个,为什么现在就需要加这个?仔细看了下控制台输出info,不加一段会显示使用默认认证方式去认证,结果失败,加上之后显示使用JwtBearer认证成功(仅限第一次,之后再有调用就显示默认认证成功了),不知道是哪里的问题,感觉是哪里没设置对?参考了一下这个https://stackoverflow.com/questions/51263883/webapi-authorize-attribute-with-services-addidentity-returns-404-not-found里面说的,但是也不太明白,望大神给指点下。