我正在创建rest api作为消息传递应用程序的后端。我希望用户只能访问自己的数据。例如,user1可以调用/ users / user1,但不能调用/ users / user2。我将如何去做。
因此,首先,用户将登录并通过用户名和密码进行身份验证。但是我从这里去哪里呢?我当时在考虑将令牌与用户数据一起存储,因此当他们访问令牌时,我可以验证该对是否匹配,但是必须有一种更好的方法来实现。我需要重组我的api吗?
答案 0 :(得分:0)
用户登录系统后,应为他们提供令牌或为该用户初始化会话。在每个连续的调用中,用户应将令牌发送到API。只要令牌/会话仍然有效,用户就应该能够调用API。
您应该有一种方法可以针对每个API调用在后端验证用户令牌。一种非常流行的方法是使用基于JWT(JSON Web令牌)的身份验证。 有关使用python和flask的示例,请参见此处:https://realpython.com/token-based-authentication-with-flask/
验证用户后,应将用户ID解析为数据库查询,以便过滤出该用户的数据。
即使我不了解您的完整用例,似乎您也需要重新构造API调用。您不应该为每个用户提供API调用。当您的系统中的用户数量动态增加时会发生什么?
因此,您应该接受用户ID作为参数,或者应该让JWT身份验证器来处理它。
REST API调用示例为
GET /user/data?userId=1234