哈希密码时CakePHP 3出错:hash()至少需要2个参数,1个给定的APP/Model/Entity/User.php

哈希密码时CakePHP 3出错:hash()至少需要2个参数,1个给定的APP/Model/Entity/User.php,php,mysql,cakephp,cakephp-3.0,Php,Mysql,Cakephp,Cakephp 3.0,我正在学习官方的书签教程: 但是在将\u setPassword($value)方法添加到我的用户类之后,我收到了这些警告,这些警告阻止我将哈希密码正确保存在我的用户表中 Warning (2): hash() expects at least 2 parameters, 1 given [APP/Model/Entity/User.php, line 26] Warning (4096): Object of class Cake\Auth\DefaultPasswordHasher coul

我正在学习官方的书签教程

但是在将\u setPassword($value)方法添加到我的用户类之后,我收到了这些警告,这些警告阻止我将哈希密码正确保存在我的用户表中

Warning (2): hash() expects at least 2 parameters, 1 given [APP/Model/Entity/User.php, line 26] Warning (4096): Object of class Cake\Auth\DefaultPasswordHasher could not be converted to string [APP/Model/Entity/User.php, line 26] Notice (8): Undefined variable: _SESSION [CORE/src/Network/Session.php, line 440] 警告(2):hash()至少需要2个参数,1个给定[APP/Model/Entity/User.php,第26行] 警告(4096):类Cake\Auth\DefaultPasswordHasher的对象无法转换为字符串[APP/Model/Entity/User.php,第26行] 注意(8):未定义变量:_SESSION[CORE/src/Network/SESSION.php,第440行]
  • 这是我在App\Model\Entity\User中的方法:
受保护函数_setPassword($value) { $hasher=新的DefaultPasswordHasher(); 返回$hasher.hash($value); }
  • 数据库中我的密码字段长度为255(有些人报告由于MySQL中的字段长度以及CakePHP 3使用的新加密方法而出现问题)

  • 我的PHP版本是PHP5.5.20(cli)(构建时间:2015年2月25日23:30:53)

  • 在myerror.log中,我看到以下几行:

2015-08-08 21:43:56警告:警告(2):hash()至少需要2个参数,1个参数在[/Applications/AMPPS/www/projects/bookmarker/src/Model/Entity/User.php,第26行] 跟踪: Cake\Error\BaseErrorHandler::handleError()-CORE/src/Error/BaseErrorHandler.php,第139行 散列-[内部],行?? App\Model\Entity\User::_setPassword()-App/Model/Entity/User.php,第26行 Cake\ORM\Entity::set()-CORE/src/Datasource/EntityTrait.php,第254行 Cake\ORM\Marshaller::merge()-CORE/src/ORM/Marshaller.php,第467行 Cake\ORM\Table::patchEntity()-CORE/src/ORM/Table.php,第2032行 App\Controller\userscocontroller::edit()-App/Controller/userscocontroller.php,第75行 Cake\Controller\Controller::invokeAction()-CORE/src/Controller/Controller.php,第411行 Cake\Routing\Dispatcher::_invoke()-CORE/src/Routing/Dispatcher.php,第114行 Cake\Routing\Dispatcher::dispatch()-CORE/src/Routing/Dispatcher.php,第87行 [main]-ROOT/webroot/index.php,第37行 2015-08-08 21:43:56警告:警告(4096):Cake\Auth\DefaultPasswordHasher类的对象无法转换为[/Applications/AMPPS/www/projects/bookmarker/src/Model/Entity/User.php,第26行]中的字符串 跟踪: Cake\Error\BaseErrorHandler::handleError()-CORE/src/Error/BaseErrorHandler.php,第139行 App\Model\Entity\User::_setPassword()-App/Model/Entity/User.php,第26行 Cake\ORM\Entity::set()-CORE/src/Datasource/EntityTrait.php,第254行 Cake\ORM\Marshaller::merge()-CORE/src/ORM/Marshaller.php,第467行 Cake\ORM\Table::patchEntity()-CORE/src/ORM/Table.php,第2032行 App\Controller\userscocontroller::edit()-App/Controller/userscocontroller.php,第75行 Cake\Controller\Controller::invokeAction()-CORE/src/Controller/Controller.php,第411行 Cake\Routing\Dispatcher::_invoke()-CORE/src/Routing/Dispatcher.php,第114行 Cake\Routing\Dispatcher::dispatch()-CORE/src/Routing/Dispatcher.php,第87行 [main]-ROOT/webroot/index.php,第37行
  • 使用控制台时也会发生同样的情况:
➜ 书签器git:(主)✗ 垃圾箱/蛋糕控制台 欢迎使用CakePHP v3.0.11控制台 --------------------------------------------------------------- App:src 路径:/Applications/AMPPS/www/projects/bookmarker/src/ --------------------------------------------------------------- 您可以使用“CTRL-C”或“exit”退出` Justin Hileman的Psy Shell v0.5.2(PHP5.5.20-cli) >>>$u=新应用程序\模型\实体\用户; =>App\Model\Entity\User{212 +“[新]”:对, +“[可访问]”:[ “*”=>正确, ], +“[脏]”:[], +“[原件]”:[], +“[虚拟]”:[], +“[错误]”:[], +“[存储库]”:null, } >>>$u->set('password','a password'); PHP警告:hash()至少需要2个参数,第26行的/Applications/AMPPS/www/projects/bookmarker/src/Model/Entity/User.PHP中给出了1个参数 >>>$u->密码 =>空
方法_setPassword应该

 return $hasher->hash($value); 
而不是

return $hasher.hash($value);

“return$hasher->hash($value);“not”return$hasher.hash($value);“Hi@Eugen,你说得对!我的错;来自Java语法对我没有帮助:)密码哈希最初对我不起作用。我必须先删除用户,然后再添加,才能让散列正常工作。 ➜ bookmarker git:(master) ✗ bin/cake console Welcome to CakePHP v3.0.11 Console --------------------------------------------------------------- App : src Path: /Applications/AMPPS/www/projects/bookmarker/src/ --------------------------------------------------------------- You can exit with `CTRL-C` or `exit` Psy Shell v0.5.2 (PHP 5.5.20 — cli) by Justin Hileman >>> $u = new App\Model\Entity\User; => App\Model\Entity\User {#212 +"[new]": true, +"[accessible]": [ "*" => true, ], +"[dirty]": [], +"[original]": [], +"[virtual]": [], +"[errors]": [], +"[repository]": null, } >>> $u->set('password', 'a password'); PHP warning: hash() expects at least 2 parameters, 1 given in /Applications/AMPPS/www/projects/bookmarker/src/Model/Entity/User.php on line 26 >>> $u->password => null
 return $hasher->hash($value); 
return $hasher.hash($value);