問題,我面臨着從字面上我發瘋的問題。下述方案:隨機密碼驗證
- 應用A - 管理用戶
- PW使用Bcrypt()創建,耗資14
- 應用B - 獲取用戶數據,並將其存儲在它裏面的地方分貝
- PW通過bcrypt()驗證,費用14
Bcrypt實現通過Zend\Crypt\Password\Bcrypt
所以,當我在一個應用程序創建一個固定的密碼,它們同步,在應用B的認證工作。
但是,每當我在應用程序A上創建一個隨機密碼,同步它們,應用程序B上的身份驗證就不起作用。
我穿過一個會話創建到重定向後前端的密碼。
$password = (string) rand(2938, 9578);
//$password = '12345678';
$bcrypt = new Bcrypt();
$bcrypt->setCost(14);
$entity->setPassword($bcrypt->create($password));
$entityService->save($entity);
$this->flashMessenger()->setNamespace('MpuServerUser')->addSuccessMessage(
"Benutzer-PIN erfolgreich erneuert. PIN: {$password}"
);
return $this->redirect()->toRoute('mpuserveruser');
正如你可以看到那是我面臨麻煩的部分。無論何時我爲給定字符串'123456'
的用戶創建新密碼,都不存在任何問題。
但是,當我使用未加註釋部分$password = (string) rand(2938, 9578);
我得到我的前端不會驗證密碼。
有與rand()
或mt_rand()
試圖之間沒有差異。任何人都知道這裏發生了什麼? ^^
更新 - 顯然只有6個字符或更長的密碼才能工作。即使我設置了只有4個字母的預定義密碼,它也不起作用。
唯一的區別是除了長度(這並不重要)是'$ password'是隨機的或不是,出於某種原因,我不能看到調用此代碼可能發生兩次,以測試你應該存儲設置後文件中rand的值。所以它的密碼你認爲它是。無法看到任何其他原因,它不會匹配你所期望的 –
@LozCherone將密碼存儲在臨時文件中實際上是一個好主意,必須嘗試一個。我在這裏真的迷失了自己:D – Sam
@LozCherone在嘗試你的方法的時候,很明顯,這與密碼的長度有關。只有密碼6個字符或更長的工作。這可能是一個ZF2的實現方式,我必須深入研究這個!你的想法很好! – Sam