让我们说我有一个包含一组团队的API。连接到这些团队的是用户和其他资源,例如时间表。在数据库中,我们有两个用户。
您将如何处理权限,以确保只有用户1可以访问团队1和3的资源,而不能访问团队2的资源?每当用户想要访问团队资源并检查是否允许访问团队资源时查询数据库都是一个坏主意,对吗?必须有更好的做事方法。
[我的第一想到是将用户所属的所有团队都放入令牌内的Claim中。这样,我就可以读取令牌,检查是否存在针对特定团队的声明,如果存在,则意味着允许用户访问资源。但是我最近读到,这不是要求的用途。
每次用户想要访问团队资源并检查是否允许访问团队资源时查询数据库都是一个坏主意,对吗?必须有更好的做事方法。
如果您担心要对数据库执行的查询数量,请使用缓存。
在您这样做之前,我仍然首先建议您“数量太多”。我们进行了大量查询,并优化是否以及何时有客观原因。