CakePHP:防止身份验证组件';s";authError“;主页上的信息
我有一个CakePHP项目,其中修改了“app/config/routes.php”,以便根指向“Users”控制器的“dashboard”操作。换句话说,这两个URL指向同一个位置: 我在“应用程序”控制器中设置了“身份验证”组件,如下所示:CakePHP:防止身份验证组件';s";authError“;主页上的信息,cakephp,Cakephp,我有一个CakePHP项目,其中修改了“app/config/routes.php”,以便根指向“Users”控制器的“dashboard”操作。换句话说,这两个URL指向同一个位置: 我在“应用程序”控制器中设置了“身份验证”组件,如下所示: class AppController extends Controller { var $components = array('Auth', 'Session'); function beforeFilter() {
class AppController extends Controller {
var $components = array('Auth', 'Session');
function beforeFilter() {
$this->Auth->authorize = 'controller';
$this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'dashboard');
if ($this->Auth->user()) {
$this->set('logged_in', true);
}
else {
$this->set('logged_in', false);
}
}
}
我希望这样,如果一个未经身份验证的用户直接进入,他们会被带到登录页面,并显示“Auth”组件的“authorror”消息,但如果他们进入,他们会被带到登录页面,而不会显示“Auth”组件的“authorror”消息。这可能吗?嗯,我不明白为什么有时候你会显示错误,为什么有时候不会。。但是您可以创建一个isAuthorized方法并修改默认AuthComponent行为的所有逻辑 打开Auth组件并检查方法“startup()”。在最后一行,您将看到:
$this->Session->setFlash($this->authError, $this->flashElement, array(), 'auth');
$controller->redirect($controller->referer(), null, true);
这是负责显示错误的部分
在它之前,你将
if ($this->isAuthorized($type)) {
return true;
}
因此,您可以在需要时更改isAuthorized方法以更改此消息
很多工作(我想……)都是徒劳的
注:忽略我可能有一种更简单的方法我通过在“用户”控制器的“登录”操作中添加以下代码来解决此问题:
一直在寻找这样的东西很长时间了!多谢各位 我必须做一点改变,然后
$this->webroot
不是“/:
如果您真的想阻止主页上的
authror
消息并简单地重定向到登录页面,那么您必须将false
作为authror
class AppController extends Controller {
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'authError' => false
]);
}
}
谢谢你的建议!想想看。有人进入你的网站主页,他们看到的第一件事就是一条信息,上面写着“拒绝访问”。在我看来,不是很友好。
if (str_replace("//","/",$this->webroot.$this->Session->read('Auth.redirect')) == $this->webroot && $this->Session->read('Message.auth.message') == $this->Auth->authError) {
$this->Session->delete('Message.auth');
}
class AppController extends Controller {
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'authError' => false
]);
}
}