.Net Core Api - 基于令牌的身份验证限制删除表中的任何记录问题

Posted

技术标签:

【中文标题】.Net Core Api - 基于令牌的身份验证限制删除表中的任何记录问题【英文标题】:.Net Core Api - Token Based Authentication Restrict Delete Any Record In A Table Problem 【发布时间】:2021-12-28 18:00:49 【问题描述】:

我正在.NET Core 上开发 Web API。我添加了基于令牌的身份验证(JWT)的身份验证方法来验证用户。我可以为用户生成令牌并验证令牌是否过期。但是,我尝试使用 A 用户的令牌删除 B 用户的记录,并使用 A 用户的令牌成功删除 B 用户的记录。如何限制用户,让他们只能删除自己的记录?

我找不到任何解决方案。

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

我认为您应该手动处理这种验证。 jwt 令牌应该包含用户的 ID,如果在您的应用中正确配置了身份验证,您应该能够从访问令牌中访问请求者用户的 ID,类似于:

User.Claims.First(x => x.Type == "id").Value;

您可以在https://jwt.io/ 上查看您的 jwt 令牌的内容。

获得用户 ID 后,您可以返回例如403 HTTP 状态码,当 jwt 令牌中的用户 ID 与要删除的记录的用户 ID 不同时。

【讨论】:

以上是关于.Net Core Api - 基于令牌的身份验证限制删除表中的任何记录问题的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core 3.1 API 中的刷新令牌 Azure 广告身份验证

ASP.NET Core API 使用 JWT 不记名令牌进行身份验证

ASP.Net Core Identity JWT 基于角色的身份验证被禁止

如何从.Net Core API 中的身份验证 JWT 令牌中获取身份用户?

ASP.NET Core 中基于令牌的身份验证(刷新)

检查用户是不是在 ASP.NET Core 中使用基于令牌的身份验证登录