【发布时间】:2025-12-01 05:10:01
【问题描述】:
我在 CakePHP 上遇到了这个奇怪的问题,当我尝试在本地登录我的网站管理 (/users/login) 时,我输入了我的用户名和密码并且工作正常 但是在我将它上传到远程服务器后,相同的代码,sambe 数据库将不允许用户登录,它说用户名/密码无效,但几个小时后试图弄清楚发生了什么我发现FormAuthenticate.php 的 authenticate 方法中的变量 $request 基本上是空的,它像这样进入远程服务器:
object(CakeRequest) {
params => array(
'plugin' => null,
'controller' => 'users',
'action' => 'login',
'named' => array(),
'pass' => array()
)
data => array()
query => array()
url => 'users/login/'
base => ''
webroot => '/'
here => '/users/login/'
}
但是,在本地运行的同一页面返回:
object(CakeRequest) {
params => array(
'plugin' => null,
'controller' => 'users',
'action' => 'login',
'named' => array(),
'pass' => array()
)
data => array(
'User' => array(
'password' => '*****',
'username' => 'admin'
)
)
query => array()
url => 'users/login/'
base => ''
webroot => '/'
here => '/users/login/'
}
我试图找到可能导致此问题的任何原因,但仍然没有运气,我是 CakePHP 的新手,所以我可能会遗漏一些东西,谢谢!!
更新 #1,这是我的 UserController::login 方法
public function login() {
$this->layout = 'default_admin';
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
}
}
更新 #2:我使用 chrome 的开发人员工具将表单方法从“post”更改为“get”,然后在 UserController::login() 上更改为: ... if ($this->request->is('get')) { ... 然后它工作了,但我需要它与“post”方法一起工作=\
【问题讨论】:
-
您能与我们分享您的
UsersController::login()方法吗? -
@Jelmer 我刚刚用方法更新了我的问题,提前谢谢!
标签: php cakephp cakephp-2.2