如何将字符串密码与laravel加密密码进行比较

时间:2017-06-22 09:56:35

标签: php laravel-5 ionic2 password-encryption

我首先在Laravel中创建了一个Web应用程序。现在我正在使用Ionic Frame工作来开发其移动应用程序。

使用laravel时,laravel会将密码转换为加密密码。 现在,在Ionic与Laravel集成API时,通过登录功能,我遇到了一个问题,如何将通过Mobile App输入的密码与laravel表中的加密密码进行比较。

如果它本来是web App那么它的工作正常,但对于API集成我正面临这个问题。请帮帮我

3 个答案:

答案 0 :(得分:5)

2种方式:

1

$hashedPassword = User::find(1)->password;

if (Hash::check('plain-text-password', $hashedPassword)) {
    // The passwords match...
}

2

$hashedPassword = User::find(1)->password;

if (Hash::make('plain-text-password') === $hashedPassword) {
  // The passwords match...
}

然而,正如官方文档所述,并且作为亲DRY(不要重复自己)方法,如果您使用Laravel附带的 LoginController ,您可能不需要直接使用这两种方式,因为它已经自动完成第一种方式。

参考:https://laravel.com/docs/5.4/hashing

重要更新

此处发布的第二种方法不起作用,因为Laravel在每个哈希函数上生成随机盐;使每个哈希值与数据库中的原始哈希密码不同,作为附加安全措施。请改用第一种方式。

答案 1 :(得分:1)

Hash :: check是最好的方法。

if(Hash::check('plain password', 'encrypted password')){
    //enter your code
}

答案 2 :(得分:0)

与password_hash的结果进行比较(' rasmuslerdorf',PASSWORD_DEFAULT)。" \ n";