我的页面数为X,我希望为每页的用户设置权限。

最初我在考虑使用bitmask。但是我已经意识到,如果页面数超过一定数量(只能在MySQL unsigned BIGINT列中存储64页),那么我的位掩码的十进制等效值可能会变得太大。

例如第64页的十进制等效值为18,446,744,073,709,551,615,这只是让它查看一页。

那么,您将如何在每页,每用户的基础上为大量页面设置查看权限?

最佳答案

为什么不将它们作为多对多关系存储在数据库中?

喜欢

user_id | page_id
      1 |       1
      1 |       2
      2 |       1
      2 |       3


然后,您可以通过SELECT * from users_pages WHERE user_id =?获取用户可以看到的页面,或者可以通过执行SELECT * from users_pages WHERE page_id = ? and user_id = ?确定是否允许用户查看特定页面。

10-06 03:05