【问题标题】:Best way to handle multiple user groups with different data stored about them?处理存储了不同数据的多个用户组的最佳方法是什么?
【发布时间】:2011-05-12 14:26:05
【问题描述】:

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

我想知道拥有数据库的最佳方式,同时在 CakePHP 中使用 ACL 和 Auth 组件。我看到了 2 种可能的解决方案:

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

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

【问题讨论】:

    标签: php mysql authentication cakephp acl


    【解决方案1】:

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

    • 身份证
    • user_id
    • 价值

    User HasMany UserData 和 UserData BelongsTo User

    有关如何设置关系数据的参考,请参阅 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'];
    

    【讨论】:

      猜你喜欢
      • 2016-05-26
      • 2011-02-26
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多