我正在创建一个 Web 应用程序,此时我开始做出后端选择。现在有很多方法可以解决这个问题,所以我正在寻找一些好的点和背的做法。
我所涉及的一些问题:
- 我应该在数据库中为管理员用户创建一个单独的表吗
- 我应该扩展一些类来加载管理数据和普通数据,还是为管理部分创建单独的类
- 我在哪里可以获得一些关于创建不同类型用户的信息
- 只是后端的一些最佳实践
我的应用程序是用 PHP 和 MySQL 数据库编写的。
为管理员用户保留一个单独的表很好,但前提是这些管理员用户也不是“常规”用户 - 否则你会踩到自己的脚趾试图保持用户名/ID 唯一但有些联系。
需要考虑的几件事:
管理员用户的Apache 身份验证(或 IIS 上的 Windows 帐户)。完全独立的系统,但允许重叠 - 普通用户可以是普通用户,但在通过浏览器进行身份验证之前,他们无法访问任何管理功能。如果您只有几种特定类型的用户角色(例如,仅限成员和管理员),则可以正常工作。
所有用户都在一个表中,但角色和权限是分开的。这是最灵活的,因为您可以根据需要进行细化。例如,任何用户都可以“发表评论”,而管理员可以“删除评论”和“禁止用户”,但版主只能“暂停评论”和“静音用户”。当您添加新功能时,只需实现一些新权限并将它们分配给角色即可。 Drupal的访问控制在这方面做得非常好,值得仔细看看。
一个好方法是在用户表中为“等级”添加一个新字段,以便区分普通用户和工作人员,如果需要,还可以区分不同的工作人员级别,例如版主、管理员等它。因为管理员应该能够执行用户可以执行的所有功能。采用
class Admin extends User { }
如果您想添加特定于员工的附加功能。
至于后端功能,这取决于您的网站是如何设置的。如果您使用的是框架,您可以向现有控制器添加新功能,并将访问权限限制为特定等级的用户。
例如,您可能有一个 ForumPost 对象的控制器,但调用 ForumPost delete() 函数将要求用户成为论坛版主。
如果您不使用框架,您可能必须为所需的每个后端功能制作自己的页面。