处理存储有不同数据的多个用户组的最佳方法?

发布于 2024-11-06 19:05:13 字数 390 浏览 4 评论 0原文

我正在创建一个将使用多种类型的用户(例如管理员、经理、用户)的 Web 应用程序。每个用户都需要存储有关他们的不同信息,有些信息在每种用户类型中都是相同的(即用户名、密码、电子邮件),而其他信息则不同。

我想知道在使用 ACL 和 ACL 的同时拥有数据库的最佳方式。 CakePHP 中的身份验证组件。我看到两种可能的解决方案:

  1. 有三个表,每个用户类型对应一个表。
  2. 有五张桌子。一个用户表、一个组表,然后是包含每种用户类型的额外字段的三个表。

我看到 1 的问题是,我不确定 CakePHP 使用不同的权限模型而不是使用组表有多容易。所以,我认为第二个解决方案将是最容易设置的,也许也是最容易维护的,但是 3 个额外的表是否有太多的开销?还是有我没有想到的更好的解决方案?

I'm creating a web application that will use multiple types of users (e.g. Admin, Managers, Users). Each user will require different pieces of information stored about them, some will be the same across each user type (i.e. username, password, email) and others will be different.

I'm wondering the best way to have the database, whilst using the ACL & Auth components in CakePHP. I see 2 possible solutions:

  1. Have three tables, one for each user type.
  2. Have five tables. A user table, a groups table, and then three tables containing the extra fields for each user type.

The problem I see with 1 is, I'm not sure how easy it is for CakePHP to use different models for permissions, instead of using a groups table. So, I think the second solution will be the easiest to set up, and maybe maintain, but is there too much overhead with the 3 extra tables? Or is there a better solution that I haven't thought about?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

枫林﹌晚霞¤ 2024-11-13 19:05:13

您可以创建一个名为 user_data 的属于用户的表,其中包含以下列:

  • id
  • user_id
  • key
  • value

User HasMany UserData 和 UserData BelongsTo User

See http://book.cakephp.org/view/1043/hasManyhttp://book.cakephp.org/view/1042/belongsTo 了解如何设置关系数据。

$data = array(
    'UserData' => array(
        'user_id' => 2,
        'key' => 'birthday',
        'value' => 'Oct 6th',
        'type' => 'admin'
    )
);

然后,在控制器中,您可以使用可包含行为获取自定义数据:

$this->set('user', $this->User->find('first', array('conditions' => array('User.id' => 2), 'contain' => array('UserData'))));

在视图中(可能最好将其设为辅助函数)

$birthday = Set::extract('/User/UserData[key=birthday]', $user);
echo $birthday[0]['value'];

You could create a table that belongsTo User called user_data with the columns:

  • id
  • user_id
  • key
  • value

User HasMany UserData and UserData BelongsTo User

See http://book.cakephp.org/view/1043/hasMany and http://book.cakephp.org/view/1042/belongsTo for reference on how to setup relational data.

$data = array(
    'UserData' => array(
        'user_id' => 2,
        'key' => 'birthday',
        'value' => 'Oct 6th',
        'type' => 'admin'
    )
);

Then, in controller, you can fetch the custom data with Containable behavior:

$this->set('user', $this->User->find('first', array('conditions' => array('User.id' => 2), 'contain' => array('UserData'))));

In the view (Probably best to make this a helper function)

$birthday = Set::extract('/User/UserData[key=birthday]', $user);
echo $birthday[0]['value'];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文