很抱歉提出另一个问题,但....我可以在我的本地服务器上实现BlowfishPasswordHasher身份验证但是当我在远程服务器上的相关文件夹中上传这两个文件User和Appcontroller时我无法登录?我已经使用简单哈希删除了所有旧用户名/密码,并创建了一个使用河豚哈希的用户(我检查了上传的文件,它们与我在本地服务器上的文件相同)。我只是得到错误登录,这是我的错误消息。 我确实必须上传BlowfishPasswordHasher文件,因为远程服务器没有这个。除了无效用户之外我没有任何错误,并且在用户数据库中存在使用河豚腌制的用户。
我知道如何修复此问题,因为我似乎已将所有相关文件上传到与我在PC上的cakephp相同的工作网站上。以前,简单的哈希在远程服务器上运行良好。
远程服务器上的php版本是5.4.30 mysql版本是5.5.37-cll
http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html
我上传的文件只是
appcontroller
class AppController extends Controller {
public $components = array( "Email", 'Session', 'Auth');
public function beforeFilter() {
$this->Auth->authError = 'You cant access this page';
$this->Auth->loginRedirect= array('controller' => 'users', 'action' => 'dashboard');
$this->Auth->logoutRedirect= array('controller' => 'users','action' => 'login' );
$this->Auth->authenticate= array('Form' => array('passwordHasher' => 'Blowfish' ));
$this->Auth->authorize= array('Controller');
$this->Auth->unauthorizedRedirect= '/users/dashboard';
$this->set("logged_in", $this->Auth->loggedIn());
user
App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth');
class User extends AppModel {
..
public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['password'])) {
$passwordHasher = new BlowfishPasswordHasher();
$this->data[$this->alias]['password'] = $passwordHasher->hash(
$this->data[$this->alias]['password']
);
}
return true;
}