我们正在构建我们的API并寻找一种有组织的方式,根据用户拥有的角色和权限授予用户访问权限。
从起点开始,我们有3个角色
实体
对于安全过滤器:
if / then / else函数的基于Id的过滤器。具有团队管理员访问权限的示例。
function isAllowAccess(teamAdminId, userId) { allowedUserIdsList = queryfor(teamAdminId); if (userId in allowedUserIdsList) then ... else BAD_REQUEST }
随着多个角色和许多实体的复杂性增加,此代码正在增长。所以我的问题:
有一个有组织的基于身份的过滤器的最佳方法是什么?是否有信誉良好的库?
我们是否应该维护一个单独的表,其中包含每个表的可访问ID 每个team_admin_id的实体?然后更新或插入的每一行都将触发此表的更新。
是否有正式或广泛接受的方法来减少数据库 在每个调用中调用开销只是为了检查team_admin是否是 允许访问特定用户?