在我尝试使用Google搜索找到解决方案后,我仍然没有找到任何帮助我的方法。问题很简单,我想用另一个Model进行用户身份验证。手册向我们展示的方式确实不起作用。
我的AppController如下所示:
public $components = array(
'Auth',
'DebugKit.Toolbar'
);
public function beforeFilter()
{
parent::beforeFilter();
if (isset($this->request->params["intranet"]) && $this->request->params["intranet"] == 1) {
$this->Auth = array(
"loginAction" => array(
"intranet" => true,
"controller" => "employees",
"action" => "login"
),
"authenticate" => array(AuthComponent::ALL => array("userModel" => "Employee"))
);
$this->layout = "intranet";
}
}
我打开的url并不重要,CakePHP总是将我重定向到/ users / login。当然,我在控制器中运行parent :: beforeFilter()。
编辑好吧,好像我想念 userModel , loginAction 似乎是正确的关键字,但在我将其更改为 array(“controller”=>“employees”,“action”=>“login”)它仍然将我重定向到/ users / login ...
答案 0 :(得分:0)
哦,天哪,我太笨了......我猜大多数程序员在阅读完之后已经有了一个facepalm,但是对于那些可能会遇到同样问题的新的CakePHP / PHP开发人员来说:
在上面的代码中,我用数组覆盖$ this-> Auth。解决方案:
$this->Auth->loginAction = array(
"intranet" => true,
"controller" => "employees",
"action" => "login"
);
$this->Auth->authenticate = array(AuthComponent::ALL => array("userModel" => "Employee"));