在Asp.NET Core 3.0的API控制器中,当未使用Authorize修饰方法时,User.Identity.Name使用JWT为空的问题可能是因为控制器未添加身份验证中间件或者未正确配置JWT身份验证。
解决该问题的步骤如下:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "your-issuer",
ValidAudience = "your-audience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-secret-key"))
};
});
app.UseAuthentication();
app.UseAuthorization();
app.UseRouting();
// 其他中间件配置
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class MyController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
var userName = User.Identity.Name;
// 其他逻辑
}
}
这样,当请求未携带有效的JWT令牌或者令牌验证失败时,API将返回401 Unauthorized错误。
对于腾讯云相关产品推荐,可以考虑使用腾讯云的身份认证服务(CAM)、API网关、云函数(SCF)等来实现身份验证和授权功能。具体可以参考以下链接:
希望以上内容能帮助到您!
领取专属 10元无门槛券
手把手带您无忧上云