如何检查用户是否具有数据库查询权限?

比方说,我有一个网站,汽车经销商pipe理他们的汽车库存。 每个汽车经销商都有自己的company_id ,他们的员工使用staff_id员工账户。

当工作人员在页面http://sellcarsfaster.com/inventory/car/jdksf9843他们应该看到他们公司的车ID为jdksf9843 。 如果他们复制这个url并将其发送给同事,那么其他员工应该可以查看该车。 但是,如果url发送给非职员,则该用户不能查看该车辆。 汽车应该只能通过那个汽车经销商的工作人员进入。

再进一步,我怎样才能检查各种可能的数据库查询的权限与各种关系的各种资产? 如下所示:

http://sellcarsfaster.com/inventory/car/jdksf9843/tires/93sl9843 http://sellcarsfaster.com/insurance/2djlasd8 http://sellcarsfaster.com/history/event/8o4jsdfj

在这种应用程序中检查查看权限是否有最佳做法? 后端应该做些什么? 我将不得不做计算繁重的数据库查询进行身份validation吗? 我必须为每个数据库查询编写自定义身份validationfunction吗? 基于staff_idcompany_id身份validation安全吗?

如果有人能指出我正确的方向,将不胜感激!

PS我目前在我的后端有JSON Web Token身份validation,但是并不妨碍不同公司的员工只使用url来看别人的库存。

使用NodeJS和Postgres与AWS Cognito进行用户authentication

如果您计划使用通过API网关公开的AWS Cognito和NodeJS后端,则可以使用IAM策略直接授权端点。 设置将总结如下。

  • 安装Cognito Userpools并将其与您的NodeJS应用程序集成
  • 将AWS API网关设置为您的NodeJS服务器的代理,并为其configuration每个路由path。
  • configurationAPI网关以使用IAM授权人。
  • 使用Cognito用户组function,您可以附加IAMangular色(策略内部),其中每个用户组都可以访问由IAM策略授予的相应端点。
  • 为了保证您的NodeJS服务器不受直接访问(只允许通过API网关访问),您可以使用API​​网关客户端证书或使用不同的身份validation机制。

JSONnetworking令牌非常适合您的情况。 您可以将公司ID存储在令牌中。 那么每个人都可以使用相同的url。 在后端validation它们的令牌,如果它通过,则意味着令牌没有被改变。

**令牌被authentication的事实意味着公司ID是您提供的,因此是合法的。 **

从令牌中获取公司ID和URL中的车辆ID。 你应该有所有的信息来制作一个SQL查询,读取类似于SELECT * FROM vehicles WHERE'carID'= x AND'companyID'= y;

如果数据库响应为空,则按照您认为合适的方式处理。