我創建了一個簡單的CMS管理建立在CakePHP的幾個小網站。將插件從1.3成功遷移到2.0後,在將Cake更新到最新版本2.1.2後,我遇到了AuthComponent問題。定義自定義表AuthComponent
插件的類名都是由插件的名稱前綴,以避免重複的類名,作爲應用最股份與插件表。所以有些時候我有一個主要的應用爲我的CMS插件中UsersController
和PluginNameUsersController
(或PostsController
和PluginNamePostsController
)。插件模型依靠$useTable
找到正確的數據庫表(因此PluginNamePostsController
仍然使用posts
)。
由於升級到Cake的2.1。*分支,AuthComponent
已停止工作,因爲它預計不存在pluginname_users
表,而不是參考users
。
是否可以定義自定義表的AuthComponent
或是否有任何其他的方法來得到這個工作?此外,這是行爲預期?
該組件在PluginNameAppController
配置如下:
public $components = array(
'Session', 'RequestHandler',
'Auth'=> array(
'loginAction' => array(
'controller' => 'pluginname_users',
'action' => 'login',
'plugin' => 'pluginname'
),
'loginRedirect' => array(
'controller' => 'pluginname_posts',
'action' => 'index',
'plugin' => 'pluginname'
),
'authenticate' => array(
'Form' => array(
'userModel' => 'PluginNameUser',
'fields' => array('username', 'password')
)
)
)
);
實際上,在'PluginNameUser'模型中定義'$ table'似乎沒有必要。我忽略了與插件的名稱的前綴'userModel',可能是因爲我正盯着自己在一個更大的不存在的問題失明。在爲userModel添加前綴後,Auth開始重新開始工作。謝謝您的幫助! – mensch