gpt4 book ai didi

php - 检查 bcrypt 密码总是失败 Phalcon php

转载 作者:可可西里 更新时间:2023-10-31 23:48:04 26 4
gpt4 key购买 nike

我在使用 Phalcon php 检查 bcrypted 密码时遇到了一个小问题。我所拥有的是:我检查密码的登录脚本

$username = $this->request->getPost('username', 'string');
$password = $this->request->getPost('password', 'string');
$conditions = "Username = :username:";
$parameters = array (
"username" => $username
);

$user = Users::findFirst(array($conditions, 'bind' => $parameters));
//check if user exists
if (count($user) > 0 && $user !== false) {

if ($this->security->checkHash($password, $user->Password)) //always fails {
//login
$this->session->set('username', $user->Password);
$this->response->redirect('index');

}

在我的注册中我有:

$name = $this->request->getPost('name', 'string');
$lastName = $this->request->getPost('lastName', 'string');
$username = $this->request->getPost('username', 'string');
$password = $this->request->getPost('password', 'string');
$email = $this->request->getPost('email', 'email');

$user = new Users(); //model
$user->Name = $name;
$user->LastName = $lastName;
$user->Username = $username;
$user->Password = $this->security->hash($password);
$user->Email = $email;
if ($user->save() == true) {
//registered
} else {
//error
}

似乎我正在按照 documentation 做所有事情但它似乎不起作用。谁能帮帮我。

最佳答案

在您的数据库中,存储的密码必须是 jt26 的加密值,即 $this->security->hash('jt26') 的乘积。可能您先存储了密码,然后实现了注册/登录功能。只需将数据库中的 jt26 替换为 $this->security->hash('jt26') 生成的字符串,一切就会开始工作。

It produces different string each and every time.Should it be like that?

是的,这正是它应该做的。参见 this了解详情。 salt 总是随机生成的(除非提供),哈希是基于它生成的。验证密码时,Bcrypt 使用盐重新生成哈希值,然后检查它是否匹配。

关于php - 检查 bcrypt 密码总是失败 Phalcon php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23442222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com