我试图覆盖 lib / Cake / Controller / Component / Auth / BasicAuthenticate.php , 因为我需要更改unauthenticated()方法。
所以我将文件复制并修改为 app / Lib / Cake / Controller / Component / Auth / BasicAuthenticate.php (也尝试没有' Cake '文件夹),但不考虑更改。
直接修改核心文件时,我的编辑工作正常,但我不是。
我该怎么办? 我使用的是Cake 2.5
答案 0 :(得分:1)
对我而言,这看起来像是在错误的轨道上,除非你没有关于基本身份验证适配器在何处以及如何使用的控件(例如在插件中),否则不应该超越该类。不提供配置。
如果你真的需要覆盖这个类,那么路径应该是
应用/ LIB /控制器/组件/认证/ BasicAuthenticate.php 强>
它应该可以正常工作(对我来说,使用CakePHP 2.5.6)。
<强> http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#overriding-classes-in-cakephp 强>
如果您可以控制适配器配置,我建议您扩展 BasicAuthenticate
类,而只覆盖unauthenticate()
方法,并且最后让auth组件使用自定义适配器。
像
这样的东西应用/控制器/组件/认证/ CustomBasicAuthenticate.php 强>
App::uses('BasicAuthenticate', 'Controller/Component/Auth');
class CustomBasicAuthenticate extends BasicAuthenticate {
public function unauthenticated(CakeRequest $request, CakeResponse $response) {
// do something special
}
}
<强>控制器强>
public $components = array(
'Auth' => array(
'authenticate' => array(
'CustomBasic'
)
)
);
另请参阅食谱中的Creating Custom Authentication objects部分。