.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 基于角色的身份验证被禁止