【问题标题】:Cannot verify password with password_verify无法使用 password_verify 验证密码
【发布时间】:2019-06-05 19:33:20
【问题描述】:

我正在尝试重定向到在 Codeigniter 的会话中存储电子邮件的用户主页。我使用password_hash($this->input->post('password'), PASSWORD_DEFAULT)) 对密码进行哈希处理,它工作正常,但是当我尝试password_verify() 它时,它失败了。

这是我的模型

public function canLogin($email, $password) {
    $this->db->where('email',$email);
    $query  =   $this->db->get($this->tableName);
    $row    =   $query->row();
    if ($row) {
        return password_verify($password, $row->password);
    }
    else {
        return false;
    }
}

这是我的控制器

public function loginValidation() {
    // User Model Loaded in constructor
    if ($this->user->canLogin($_POST['email'], $_POST['password'])) {
        $session_data   =   array('email' => $_POST['email'] );
        $this->session->set_userdata($session_data);
        redirect('profile/personal','Refresh');

    } else {
        echo 'fail';
        $this->session->set_flashdata('error', 'Invalid Username or Password');
        // redirect('login','Refresh');
    }
}

我不知道逻辑哪里出了问题,它每次都重定向到同一个登录页面,我正在尝试对其进行身份验证,将电子邮件存储在会话中并将其重定向到 profile/personal ,任何人都可以指出我错过了逻辑的地方?

【问题讨论】:

  • 你确定这段代码正在运行吗?就像,也许登录表单操作没有设置,它提交给自己而不是loginValidation 路由。只是一个想法。
  • @ArtisticPhoenix 他不喜欢你的三元运算符。 :)
  • @Dharman 对,我记得,但为了提问,我将其详细说明为您的版本
  • @Don'tPanic 我很肯定代码正在运行,因为它总是回显失败作为 XHR 结果
  • @YashKaranke 密码列的长度是多少?

标签: php codeigniter login passwords


【解决方案1】:

@YashKaranke 密码列的长度是多少? – 放克四十九
@FunkFortyNiner 它是 50,数据类型为 varchar – Yash Karanke

密码栏的长度太短,应该是the manual on PHP.net for password_hash()建议的60或255。

您现在必须重新开始使用新的哈希值。

验证失败静默

【讨论】:

  • @YashKaranke 没什么好傻的 :) 它发生了。
  • @YashKaranke 通常不要吝啬 varchar 最大长度。
  • annnnd AJAX 调用现在没有发生,我讨厌我的生活 :)))) 但是谢谢你们,这帮助了很多
【解决方案2】:

如果您正在使用:

password_hash($this->input->post('password', PASSWORD_DEFAULT));

你确定这是正确的散列吗?不应该是:

password_hash($this->input->post('password'), PASSWORD_DEFAULT);

【讨论】:

  • @YashKaranke “我打错字了..”,问题结束了吗?还是你在这里打错字了?
猜你喜欢
  • 2016-05-10
  • 2017-07-06
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 2018-03-01
  • 1970-01-01
相关资源
最近更新 更多