Dav*_*ave 2 authentication cakephp cakephp-2.2
我们有一个网站,我们正在转移到一个新的服务器.在旧服务器上一切正常.它只是一个网站的开始,所以它非常简单.
迁移到我们的新服务器时,尝试登录不再有效.但是 - 根据debugKit,生成的查询由$this->Auth->login():
SELECT `User`.`id`, `User`.`name`, `User`.`email`, `User`.`username`, `User`.`password`, `User`.`role`, `User`.`created`, `User`.`modified`
FROM `shopping_main`.`users` AS `User`
WHERE `User`.`username` = 'another'
AND `User`.`password` = '3813dd3a5eeb39c857d56f9ae58ec7f8237e5eb3'
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
IS返回1行 - 但是这个if块失败了:
if ($this->Auth->login()) {
$this->Session->setFlash(__('You are now logged in.'));
} else {
$this->Session->setFlash(__('Invalid username or password, try again'));
}
Run Code Online (Sandbox Code Playgroud)
PDO安装在两个(相同版本)上 - 不确定是否重要,但我们之前遇到过奇怪的问题.
在全新安装CakePHP 2.2稳定版时,一切都亮起绿色(数据库连接,modrewrite等等)
我原本以为我们的数据或代码等等有问题,但是 - 它是相同的数据,相同的代码,并且通过它返回1行的事实得到验证.
下面是我$components在AppController中最新的数组:
public $components = array(
'DebugKit.Toolbar',
'Session',
'Cookie',
'Auth' => array(
'loginRedirect' => array('controller' => 'dashboard', 'action' => 'index', 'admin'=>true),
'logoutRedirect' => array('controller' => 'users', 'action' => 'login', 'admin'=>true)
)
);
Run Code Online (Sandbox Code Playgroud)
更新:
根据我们的服务器人员,我们遇到问题的服务器是PECL唯一安装的服务器 - 当他删除它时,登录工作正常.(我们在服务器上需要它用于其他事情 - 为什么/什么会导致我们的登录无法运行?)
通过原始海报回答(我):
根据我们的服务器人员说,"有两种方法可以加载PDO.第一种方法是使用easyapache安装PDO php扩展.第二种方法是通过PECL安装PDO.看来有问题的模块是不同的."
显然,这台服务器上有PECL而不是普通的easyapache PDO.当他删除它,并使用easyapache PDO重新启动/重置它时,一切都很好.
所以 - 像CakePHP这样的声音需要"正常"的PDO.
谜团已揭开.
如果您有PECL,则可以使用此解决方法:
在Datasource文件夹中创建一个文件"HpMysql.php"并添加以下代码/类:https://github.com/lorenzo/HipHop/blob/master/Model/Datasource/Database/HpMysql.php
将您的database.php'数据源'更改为'HpMysql'
| 归档时间: |
|
| 查看次数: |
1253 次 |
| 最近记录: |