CakePHP:Can';当使用成员控制器而不是用户控制器时,请不要登录
我有一个非常奇怪的问题,我简直无法再弄明白了。我设置了一个cakephp项目,我使用一个用户控制器来处理身份验证,一切都很完美,100%。但是,我决定删除用户控制器、模型和视图,并将其替换为我的成员,因为成员将是我的主要用户,有一两个管理员需要登录 我现在在Members模型、控制器和视图中的内容与在Users中的内容相同,但默认情况下CakePHP希望使用Users模型和Users表。我做了很多调试,最终让CakePHP使用成员而不是用户,但现在我无法登录,因为我一直收到您的用户名和密码不正确,请重试错误消息 这是我的代码,我希望有人能给我指出正确的方向 AppController.php 关于CakePHP:Can';当使用成员控制器而不是用户控制器时,请不要登录,cakephp,login,cakephp-2.0,Cakephp,Login,Cakephp 2.0,我有一个非常奇怪的问题,我简直无法再弄明白了。我设置了一个cakephp项目,我使用一个用户控制器来处理身份验证,一切都很完美,100%。但是,我决定删除用户控制器、模型和视图,并将其替换为我的成员,因为成员将是我的主要用户,有一两个管理员需要登录 我现在在Members模型、控制器和视图中的内容与在Users中的内容相同,但默认情况下CakePHP希望使用Users模型和Users表。我做了很多调试,最终让CakePHP使用成员而不是用户,但现在我无法登录,因为我一直收到您的用户名和密码不正确
beforeFilter()
需要注意的是,我已经尝试了Member的复数和单数形式,并且还添加了$this Auth->allow()
函数,这样我就可以在Members表中编辑我的用户密码,以确保我的密码被正确哈希
另一个注意事项是,无论我在哪里看到,当使用loginAction
时,它应该是这样的:
'loginAction' => array(
'controller' => 'Members',
'action' => 'login',
'plugin' => 'members'
),
使用上述方法的问题在于,我的URL结构最终看起来像/members/members/login
,因此我在AppController中省略了插件键值对,我猜这可能就是错误所在
Member.php
MembersController.php
/成员/login.ctp
正如我所说的,任何帮助都将是令人惊奇的,因为我已经经历了我所知道的一切,试图让它工作起来……你有吗?如果不是现在就做
这里的例子非常清楚:
$this->Auth->authenticate = array(
'Basic' => array('userModel' => 'Member'),
'Form' => array('userModel' => 'Member')
);
您必须指定表单身份验证适配器应使用的模型
对于重定向问题,请定义
$this->Auth->redirectUrl = array(/* Whatever you need here */);
有吗?如果不是现在就做
这里的例子非常清楚:
$this->Auth->authenticate = array(
'Basic' => array('userModel' => 'Member'),
'Form' => array('userModel' => 'Member')
);
您必须指定表单身份验证适配器应使用的模型
对于重定向问题,请定义
$this->Auth->redirectUrl = array(/* Whatever you need here */);
尝试将其放入AppController.php文件的beforeFilter中
$this->Auth->loginAction = array('controller' => 'members', 'action' => 'login');
这会将您的应用程序指向正确的url进行登录。尝试将其放入AppController.php文件的beforeFilter中
$this->Auth->loginAction = array('controller' => 'members', 'action' => 'login');
这会将您的应用程序指向正确的url进行登录。对于我要登录的每种类型的组(例如管理员、用户或任何其他类型),您必须在控制器和模型中编写以下内容: 假设您有两种不同平台的用户可以访问,比如管理员和用户 在Controller/AppController.php中
public $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers/')
)
),
'Session');
在Model/Administrator.php中
public function beforeSave() {
if (isset($this->data['Administrator']['password'])):
$this->data['Administrator']['password'] = AuthComponent::password($this->data['Administrator']['password']);
return true;
endif;
}
public $actsAs = array('Acl' => array('type' => 'requester'));
public function parentNode() {
if (!$this->id && empty($this->data)) {
return null;
}
if (isset($this->data['Administrator']['group_id'])) {
$groupId = $this->data['Administrator']['group_id'];
} else {
$groupId = $this->field('group_id');
}
if (!$groupId) {
return null;
} else {
return array('Group' => array('id' => $groupId));
}
}
在Controller/AdministratorsController.php beforeFilter()中
如果您的所有团队都有此功能,它应该会非常有效我有三种类型的组:管理员、商店和用户,这对我很有用对于我要登录的每种类型的组(例如管理员、用户或任何其他类型),您必须在控制器和模型中写入以下内容: 假设您有两种不同平台的用户可以访问,比如管理员和用户 在Controller/AppController.php中
public $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers/')
)
),
'Session');
在Model/Administrator.php中
public function beforeSave() {
if (isset($this->data['Administrator']['password'])):
$this->data['Administrator']['password'] = AuthComponent::password($this->data['Administrator']['password']);
return true;
endif;
}
public $actsAs = array('Acl' => array('type' => 'requester'));
public function parentNode() {
if (!$this->id && empty($this->data)) {
return null;
}
if (isset($this->data['Administrator']['group_id'])) {
$groupId = $this->data['Administrator']['group_id'];
} else {
$groupId = $this->field('group_id');
}
if (!$groupId) {
return null;
} else {
return array('Group' => array('id' => $groupId));
}
}
在Controller/AdministratorsController.php beforeFilter()中
如果您的所有团队都有此功能,它应该会非常有效我有三种类型的组:管理员、商店和用户,这对我很有用我确实阅读了它,并在我的AppController中尝试了以下操作:
'authorize'=>array('controller','Actions'=>array('actionPath'=>'controllers','userModel'=>'Member'),
,但我现在会尝试上面的操作,我实际上没有重命名这些文件。我有一个members和一个users表,我从中构建了我的模型和控制器。我的初始用户表只是处理身份验证,而我的成员包含了更多关于成员的详细信息。相信我,我不会选择在Cake上超越常规,如果这对这个项目有意义的话,我更愿意与用户打交道。好的,我添加了你建议的代码,但是结果与我在Auth components数组中为此做的实现没有太大的不同。然而,现在发生的事情是,该站点将您重定向到/members/pages/login而不是/members/login$this->Auth->redirectUrl需要设置为登录后应该重定向到的任何位置。我确实阅读了它,并在我的AppController中尝试了以下操作:'authorize'=>array('controller','Actions'=>array)('actionPath'=>'控制器','userModel'=>'成员'),),
但我现在就试试上面的方法。我实际上没有重命名文件。我有一个成员和*有一个用户表,我用它构建了我的模型和控制器。我的初始用户表只是处理身份验证,而我的成员在成员的详细信息方面包含了一大堆。相信我,我不会选择超出这个范围Cake的规范,如果这对这个项目有意义的话,我更愿意与用户打交道。好的,我添加了你建议的代码,但是结果与我在Auth components数组中为此所做的实现没有太大的不同。但是,现在发生的事情是网站将你重定向到/members/pages/login而不是/members/login$this->Auth->redirectUrl需要设置为登录后应该重定向到的任何位置。您只需创建一个