8

CakePHP 的AuthComponent假设您有一个包含用户名和密码的 Users 表。我想找到一种方法来覆盖从用户到帐户的默认表名。

背景资料:

我设计数据库的方式是有一个用户表和一个帐户表。

账户

  • ID

  • 用户身份

  • 用户名

  • 密码

  • 身份验证服务(例如,我的站点、Facebook、Google、OpenID等)

用户

  • 简单地拥有用户的所有个人信息(年龄、性别等)

这样做的原因是

  1. 每个用户可以有多个可以登录的帐户,因此他们不会被锁定在一个帐户中
  2. 我可以将第三方服务连接到一个帐户以获得更棒的体验

现在回到问题....

CakePHP 有关于更改默认字段名称的文档,但我找不到有关更改默认表名称的任何内容,但假设它本质上是相似的......

更改默认字段名称的示例:

function beforeFilter() {
    $this->Auth->fields = array(
            'username' => 'username',
            'password' => 'secretword'
        );
 }

有没有办法做到这一点,或者我应该按照 CakePHP 约定重新构建表格并仍然完成同样的事情?

4

2 回答 2

20

在 app_controller.php 中:

function beforeFilter() {
    $this->Auth->userModel = 'Account';
}
于 2009-01-13T04:43:55.833 回答
0

下面的代码在我的情况下很有帮助,因为在电子邮件字段中接受用户名,您还可以在选项中定义密码哈希。

$this->Auth->authenticate = array(
    'Basic' => array('userModel' => 'Account'),
    'Form' => array(
       'fields' => array('username' => 'email'),
       'userModel' => 'Account'
       )
 );
于 2018-04-27T03:38:58.860 回答