因此,我目前正在使用NodeJS,ExpressJS和MySQL作为数据库为Web应用程序学习/构建REST API后端服务器。我的问题是关于实现授权以确保用户A不访问或编辑属于另一个用户的数据的最佳方法。请注意,我了解有很多实施基于角色的授权的示例(即用户组与管理员组等),但这不是我要的。相反,我如何针对用户访问的数据授权用户?
我可能对此考虑过多,甚至没有必要。我应该只检查每个SQL查询中的数据是否属于用户,但是我想问一问是否有中间件或策略体系结构可以解决这个问题,甚至可以通过缓存进行授权。
我能想到的唯一解决方案是,每个SQL查询都返回带有结果的用户ID,然后我创建一个服务来检查ID是否匹配的每个结果。如果是,则继续。如果不回滚,则查询并返回未授权错误。这个可以吗?
我非常感谢您的建议,帮助,以及如果您能为我指明正确的方向。
提前谢谢了。
将userId(或ownerId)保存在每个表中,并创建一个中间件,其中每个数据库访问方法都需要使用userId作为参数,例如:
readOne(id, userId) {
// implements SELECT * FROM example WHERE id = id AND userId = userId
}
updateOne(id, data, userId) {
// implements UPDATE example SET data = data WHERE id = id AND userId = userId
}
...
出于安全原因,切勿发送“您不是所有者,存在请求的数据”作为响应。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句