我有一个 ASP.NET Core 8 Web API,可以使用 JWT 身份验证进行调用,如下所示:
[Authorize]
[HttpPost]
public async Task<ActionResult<IRecord>> PostRecordA(Record rec)
{
var id = await dbc.AddNew(rec);
return CreatedAtAction(nameof(GetRecord), new { id = id }, rec);
}
一个新的要求是允许未经身份验证的用户,并存储用户 ID,因此数据库调用将更改为:
var id = await dbc.AddNew(uid, rec); // for authenticated users
// or
var id = await dbc.AddNew(0, rec);
有没有办法使
[Authorize]
属性可选并以某种方式获取 JWT 用户 ID?
环境是 ASP.NET Core 8,AWS cognito
我认为没有办法让它成为可选的。我会删除该属性,而是使用
User.Identity.IsAuthenticated
检查请求是否是从经过身份验证的用户发送的,然后访问用户 ID。