php - 如何管理用户访问和用户权限

标签 php mysql user-permissions

我正在使用 PHP + MySql 开发一个应用程序。在我的应用程序中,我有一个用户表、一个关系表( friend 、关注、订阅)和一个帖子表。用户的主要操作是:

  • 一个用户有 friend
  • 用户可以发表文章
  • 用户可以看到好友条目
  • 最后用户可以阻止特定 friend 查看条目

如果用户 A 是用户 B 的 friend ,那么用户 A 可以看到用户 B 的所有条目。但是用户 B 可以限制只有几个 friend 可以访问。现在的问题是:如何管理这些权限?我在想一个表来存储每个被阻止查看特定条目的用户,但是一旦一个用户可以有多个 friend ,这就不是一个好主意。那么,我该如何解决呢?有人可以告诉我如何开始吗?也许是在 Google 上搜索的正确术语或类似内容的链接。

最佳答案

您走在正确的轨道上。您将要使用链接表。您将从表 users 开始。每个用户都有一个ID。然后创建一个表users_friends。该表将包含两个 ID,user_id 和 friend_id。最后一个表是 users_restricted,它也包含两个 ID,即 user_id 和 restricted_id。

例如

users
user_id name 
1       user1
2       user2
3       user3

users_friends
friend1_id friend2_id
1          2
2          3

这表示用户 1 和 2 是 friend ,用户 2 和 3 是 friend 。 (假设如果用户 1 是用户 2 的 friend ,那么用户 2 也是用户 1 的 friend )

users_restricted
user_id restricted_id
1       2

现在即使用户 1 和用户 2 是 friend ,用户 2 在受限列表中,这意味着不允许用户 2 查看用户 1 的条目。

您可以看到表是通过 id 链接的,所有 id 都来自 users 表。这也可以扩展到与条目相关。只需通过 ID 引用条目即可。

要阻止用户访问特定条目,您需要下表。

entries
entry_id user_id ... other columns holding entry information
1        1
2        1
3        2
4        2

现在用户 1 已经创建了 2 个条目(条目 1 和条目 2),用户 2 已经创建了 2 个条目(条目 3 和条目 4)。另一个表将保存限制。

entries_restricted
entry_id restricted_user_id
1        2

这表示用户 2 无法查看条目 1。

要使条目对用户 2 可见,您的语句应如下所示。

SELECT e.*, er.entry_id FROM entries e JOIN entries_restricted er ON e.entry_id=er.entry_id WHERE er.restricted_user_id != 2;

该语句选择除限制用户2的条目之外的所有条目信息。

关于php - 如何管理用户访问和用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812766/

相关文章:

php - 值 ajax-upload 一次多个文件

php - 匹配给定 IP 范围/掩码的 IPv4 地址?

mysql - Symfony Doctrine - 无需外键连接

mysql - 如何直接从 phpmyadmin 列更新 X

c++ - setreuid() 失败,操作不允许

php - 将 GMT+# 格式的日期时间转换为 GMT

javascript - 如何在单独的窗口中打开 CSV 文件

linux - 使用 netstat 远程获取基于 unix 的操作系统上的所有进程连接需要什么权限

php - 文本搜索以与 Mysql 数据库表进行比较

java - 一种存储用户访问权限的方法