我正在开发一个Web App,它有一个角度为2的前端和一个访问PostgreSQL数据库的Flask后端。我的应用程序向我的后端发送请求,如GET /items/{user_id}
、GET /items/{user_id}/{item_id}
和POST /items/{user_id}/{item_id}
我对Web开发比较陌生,这是我第一次设计RESTAPI,如何允许用户只能访问其用户id下的项目?例如,如果他们的用户id=123 GET /items/123
可以工作,但是GET /items/234
不能?你知道吗
是从PostgreSQL端完成的,还是我必须在后端代码服务器代码中编写逻辑才能执行以下操作:?你知道吗
if current_user.id != req.params.user_id:
// Send response status 403
else
// Send response 200 with items as the body
有没有更好的方法来实现这一点?你知道吗
谢谢你。你知道吗
因为这是一个非常宽泛的问题,有很多例外,所以我会非常笼统。但这应该表示为数据库中的一对多/多对一关系。换句话说,一个用户可以拥有多个项目,但一个项目只能由一个用户拥有。您需要在Items表中有一个表示
user_id
或所有者ID的外键约束。您只需要在数据库中查询与请求用户ID匹配的项为了防止用户请求其他项目,您可能必须实现某种在后端运行的中间件,以检查用户何时请求特定项目,如果用户不拥有该项目(如您所建议的),该项目将返回错误。你知道吗
不过,老实说,如果您担心它的安全性,您应该考虑重新构造API调用。因为您是基于url中的
user_id
参数来确定身份的,所以您向随意更改其广告ID的用户开放了自己。使用web令牌建立身份将大大增强应用程序的安全性。你知道吗相关问题 更多 >
编程相关推荐