我正在使用值为
Authorization
的 Bearer <encoded jwt>
标头将 JWT 发送到我的端点。这是 JWT 的有效载荷:
{
"sub": "1",
"email": "[email protected]",
"jti": "4dabc47a-c524-4f23-b271-420235822d3d",
"role": "admin",
"exp": 1682255987,
"iss": "http://localhost:5000",
"aud": "http://localhost:5000"
}
但是,当我发出请求时,我收到了一个
403 Forbidden
响应,而不是预期的201 Created
。这是我在控制器中的端点的代码:
[Authorize("admin")]
[HttpPost]
public async Task<IActionResult> Post([FromBody] ExampleRequest request)
{
// actual code returning Created()
}
Program.cs 中的授权配置:
builder.Services.AddAuthorization(options =>
options.AddPolicy("admin", policy =>
policy.RequireClaim("role", "admin")));
我确定令牌没有过期。响应标头不包含任何有用的内容。我已将授权中间件添加到应用程序(
app.UseAuthorization();
)。有人可以告诉我我做错了什么吗?
我相信我包含了所有必要的细节,但这里是source code如果你想检查它。
谢谢