【发布时间】:2017-07-31 07:33:18
【问题描述】:
我在 laravel 5.4 应用程序中有自定义类,它应该返回散列秘密。类是
class Hash {
// Unencrypted secret
private $secret;
public function generateSecret(){
$secret = generateSecretKey();
$secret_hash = password_hash($secret, PASSWORD_BCRYPT);
Session::put('secret-hash', $secret_hash);
$this->secret = $secret;
}
}
然后在我的控制器中我有
use Hash;
class UsersController extends BaseController
{
public function Auth()
{
$myhash = new Hash();
$msg = '';
$myhash->generateSecret();
$enc = $myhash->encryptSecret($key->key);
return View::make('users.auth', ['enc'=> $enc]);
}
...
}
var_dump($myhash->generateSecret()); 从控制器返回 NULL
var_dump($secret) in public function generateSecret() 返回 string(15) "866094233422231" string(15) "583375207466239" 这是正确的。
UsersController 中的var_dump($myhash); 也返回正确的数据
String(15) "008844975703088" object(Hash)#329 (1)
{
["secret":"Hash":private]=> string(15) "008844975703088"
}
看来问题出在控制器和生成哈希$myhash->generateSecret();。该函数必须生成秘密(一个字符串),然后将其哈希$enc = $myhash->encryptSecret($key->key); 并显示在页面上。
任何想法为什么该功能不起作用?我不知道我还能尝试什么。
【问题讨论】:
-
我认为
var_dump显示 null 因为你的函数没有返回值。 -
是的,我也这么认为,但是当我 var 直接在函数中转储它时,它会显示结果并且它不是 null,这对我来说很奇怪。
-
返回你的函数 generateSecret 的值。
-
@aldrin27,这是
generateSecret-string(15) "866094233422231" string(15) "583375207466239"的示例返回