【发布时间】:2021-11-18 04:18:06
【问题描述】:
我正在为体育联盟构建一个网络应用程序。联赛简介页面由用户创建,他们可以在其中管理联赛(添加球队、批准最终成绩、发布公告等)。创建此页面的用户应该是唯一能够执行这些操作的用户。其他用户可以访问个人资料,意思是只读。
在数据库的leagues 表中有一个名为owner_id 的外键列引用users 表id 列。
在用户想要将球队添加到联赛的场景中,是否可以在客户端执行此代码?这将是检查用户是否被授权的唯一代码。我还需要服务器端代码吗?如果不打开另一个数据库连接,我将如何做到这一点?
async function AddTeam(){
if(user.id === league.owner_id){
///api call
}
}
用户 id 在登录时可用。联赛 owner_id 在访问联赛资料页面时可用。
【问题讨论】:
-
你必须在服务器端进行。客户端代码完全掌握在用户手中,因此假设恶意行为者可以以任何可能的方式对其进行更改,包括将修改后的请求发送到后端。
-
@Nick 这是有道理的。出于 UI 的目的,我猜可以进行简单的 if 语句检查,对吧?
-
是的,
if语句非常适合 UI,只要确保您保护后端的东西! -
@Nick 如果我在请求中发送用户 id 和联赛 owner_id 以在后端进行比较,如果他们知道某事的用户 id/owner_id,是什么阻止了某人修改请求他们想篡改?因此,我不认为在后端执行此操作比在前端执行此操作更安全。
-
您不应根据用户提交的任何信息验证用户的身份。您应该根据 cookie 或 JWT 或您的后端可用于查找用户身份的其他令牌来获取它
标签: reactjs permissions authorization roles