2012-10-08 32 views
0

我是CakePHP的新手,我想从自定义库迁移到CakePHP。如何使用动态用户属性配置用户认证?

我,对我的自定义lib下,为用户属性是这样的:

auth_users表就知道了 “user_ids”:

CREATE TABLE IF NOT EXISTS `auth_users` (
    `id` int(11) NOT NULL, 
    UNIQUE KEY `id` (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

auth_user_attributes表来存储 “用户属性”:

CREATE TABLE IF NOT EXISTS `auth_user_attributes` (
    `user_id` int(11) NOT NULL, 
    `attribute` text NOT NULL, 
    `value` text NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

因此,无论何时我希望用户通过user_id,我的自定义库返回$system->auth->user->get(1)到:

Array(
    'fullname' => 'José Moreira', 
    'username' => 'Cuss', 
    ... 
) 

如果我要救我的用户有两种方法,保存整个阵列$system->auth->user->save(user_id,user_attributes_array)或属性$system->auth->user->put(user_id, user_attribute, user_attribute_value)

我怎么能这样做介绍CakePHP?

回答

1

我建议你重新设计你的模式以适应CakePHP约定。否则,你会失去很多automagic,如果没有人强迫你,我认为没有任何意义可以迁移到Cake。 User不能有多于一个fullnameusername。没有理由将fullnameusername放入另一个表中。按照Simple Authentication and Authorization Application turorial,你将没有痛苦。

然后您可以通过调用User->UserAttribute->saveMany()来保存用户属性。

+2

再加上Cake希望所有表具有主键(自动增量或uuid)以保存正常工作的事实。不知道OP是否在他的示例中跳过了它们,或者表中实际上没有主键。 – ADmad