繁体   English   中英

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

[英]How to compare a string password with laravel Encrypted Password

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

在使用 laravel 时,laravel 将密码转换为其加密。 现在,在将 Ionic 中的 API 与 Laravel 集成时,使用登录功能,我面临一个问题,如何将通过移动应用程序输入的密码与 Laravel 表中的加密密码进行比较。

如果它本来是网络应用程序,那么它工作正常,但对于 API 集成,我正面临这个问题。 请帮我

2种方式:

1.

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

if (Hash::check('plain-text-password', $hashedPassword)) {
    // The passwords match...
}
$hashedPassword = User::find(1)->password;

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

但是,正如官方文档所说,并且作为一种亲 DRY(不要重复自己)方法,如果您使用 Laravel 附带的LoginController ,您可能不需要直接使用这 2 种方式,因为它会自动执行第一种方式已经。

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

重要更新

这里发布的第二种方法不起作用,因为 Laravel 使用bcrypt ,它在每个散列上随机生成一个盐; 使每个散列与数据库中的原始散列密码不同。 请改用第一种方式。 您还可以阅读Laravel 密码盐存储在哪里? .

Hash::check 是最好的方法。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM