【发布时间】:2021-05-06 03:10:35
【问题描述】:
我得到了 .NET 5 Web 应用程序(MVC = 模型视图控制器),在这里我添加了带角色的 DefaultIdentity。我向角色添加了一个用户,我为控制器的授权和特定角色的方法创建了一个属性,它可以工作,这部分工作正常,例如[授权(角色=管理员)]
现在我已经添加了 API 控制器。我想在 API 控制器上使用相同的属性,但是这次用户将通过 API 登录到系统,并获取 JWT,并且 JWT 包含特定角色,这不是问题它也可以工作!
但问题在于将这两者放在一起工作!
在向 ConfigureServices 方法添加逻辑后,我无法再访问 MVC 控制器,而 API 控制器正在工作。我的意思是返回401,很明显我覆盖了规则,但我想保留两者,欢迎任何提示或解决方案!
services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; })
.AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters
{
ClockSkew = TimeSpan.Zero,
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = true,
ValidIssuer = appSettings.Issuer,
ValidateAudience = true,
ValidAudience = appSettings.Issuer,
ValidateLifetime = true
};
});
【问题讨论】:
-
not able to access MVC controllers anymore配置了默认身份验证方案JwtBearerDefaults.AuthenticationScheme,这会导致问题。 -
嗨@JS,关于这个案例的任何更新?
标签: c# .net asp.net-mvc asp.net-core asp.net-web-api