【发布时间】:2013-06-14 18:50:09
【问题描述】:
我一直想知道,是否最好在每个请求中检查数据库的帐户访问权限,还是在会话状态下缓存(例如 ACL)。
我目前的情况并不是特别关键,但我觉得必须注销并重新登录以刷新缓存的凭据会很烦人。我还考虑过使用带有 TTL 的临时数据存储。似乎它可能是两者中最好的。
【问题讨论】:
-
为权限表提供一个关于用户 ID 的聚集索引并获取用户的权限列表应该很少或没有服务器负载,使缓存毫无意义。
-
嗯...我没有集中的权限表——该信息在多个 m:n 表中。你会推荐集中化吗?
-
针对特定请求需要检查多少个表?每个表有多少行?如果您必须检查多个表,那么集中化将是明智之举,因为您将 N 次聚集索引扫描(在用户 ID 上)转换为仅返回更多行的一次。
-
现在只有两三张表,每张有几百行,但我希望它会增长不少,并希望尽可能避免不必要的数据库查询
标签: security validation web-applications user-permissions