【问题标题】:Can a "plain" php application use a laravel user table for authentication?“普通” php 应用程序可以使用 laravel 用户表进行身份验证吗?
【发布时间】:2017-12-19 21:14:24
【问题描述】:

目前我有一个带有身份验证的 Laravel 应用程序。我想知道我是否可以拥有另一个使用相同用户表进行身份验证的 PHP 应用程序(独立于框架)。我不想再次使用 Laravel,因为它会过度工程。

我主要关心的是如何在 Laravel 中对密码进行哈希处理。我可以将普通的 PHP 应用程序配置为以相同的方式散列密码吗?如果是这样,我该怎么做?

【问题讨论】:

  • 深入了解 Laravel 源代码并了解密码是如何散列的。
  • 如果你应该让你的普通 php 代码将请求重定向到 Laravel 内的 auth 端点,然后让 Laravel 进行身份验证并返回对初始 php 代码的响应,然后在成功后继续进行身份验证,如果不成功则向客户端返回错误。
  • @victor 我没想到这个!听起来它可以工作..

标签: php laravel authentication hash laravel-5.3


【解决方案1】:

Laravel 使用password_hash() 创建密码哈希(参见make() 方法源代码):

password_hash('somePassword555', PASSWORD_BCRYPT);

password_verify()检查密码哈希(见check()方法源代码):

password_verify('somePassword555', $hashedPasswordFromDB);

【讨论】:

  • 谢谢!刚刚在一些已经存储的密码上测试了这些功能,它们可以工作!
【解决方案2】:

这是您要签出的文件 供应商/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php

这些是他们正在使用的函数,password_hash();password_verify();

function make($value, array $options = [])
    {
        $cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;
    $hash = password_hash($value, PASSWORD_BCRYPT, ['cost' => $cost]);

    if ($hash === false) {
        throw new RuntimeException('Bcrypt hashing not supported.');
    }

    return $hash;
}

function check($value, $hashedValue, array $options = [])
{
    if (strlen($hashedValue) === 0) {
        return false;
    }

    return password_verify($value, $hashedValue);
}

【讨论】:

  • 谢谢!这会有很大帮助!为这些寻找完全错误的地方
猜你喜欢
  • 1970-01-01
  • 2012-09-26
  • 2010-10-09
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多