当前位置: 首页 > 知识库问答 >
问题:

Laravel 5:使用SHA1代替Bcrypt

唐健
2023-03-14

我试图扩展laravel 5中的默认BCryptHashServiceProvider,以使用SHA1加密。

使用这个问题的答案:如何在Laravel 4中使用SHA1加密而不是BCrypt?和官方留档http://laravel.com/docs/5.0/extending#container-based-extension,我设法伪造了以下代码:

应用程序内/提供商/服务提供商。php


    use App\ShaHasher;
    use Illuminate\Hashing\HashServiceProvider;

    class ShaHashServiceProvider extends HashServiceProvider {

        public function boot()
        {
            parent::boot();

            $this->app->bindShared('hash', function()
            {
                return new ShaHasher();
            });
        }

    }

应用程序内/ShaHasher。php


    use Illuminate\Contracts\Hashing\Hasher as HasherContract;

    class ShaHasher implements HasherContract {

        public function make($value, array $options = array()) {
            $value = env('SALT', '').$value;
            return sha1($value);
        }

        public function check($value, $hashedValue, array $options = array()) {
            return $this->make($value) === $hashedValue;
        }

        public function needsRehash($hashedValue, array $options = array()) {
            return false;
        }

    }

在app/config/app中。php


    'providers' => [
            ...
            //'Illuminate\Hashing\HashServiceProvider',
            'App\Providers\ShaHashServiceProvider',
            ...
    ],

我还使用Laravels开箱即用AuthController来处理登录。

但它似乎并没有像我预期的那样起作用。我第一次尝试登录时,一切都很好。然后我退出了,从那以后,每次尝试登录都失败了。

我没有得到任何错误,只是“哎呀!你的输入有一些问题。这些凭据与我们的记录不匹配。"消息。

我想知道到底哪里出了问题,哪里出了问题?我希望你们中的一些天才能帮助我!

共有1个答案

裴威
2023-03-14

我自己解决了这个问题:-)

应用程序内/提供商/服务提供商。php我重写了错误的方法boot(),而实际上是我应该重写的方法register()


    use App\ShaHasher;
    use Illuminate\Hashing\HashServiceProvider;

    class ShaHashServiceProvider extends HashServiceProvider {

        public function register()
        {
            $this->app->singleton('hash', function() { return new ShaHasher; });
        }

    }

 类似资料:
  • 问题内容: 我正在为一款游戏开发一个所谓的AAC(自动帐户创建者),它基本上是一个具有创建帐户,玩家和其他更多功能的站点。该服务器仅支持SHA1和Plain- 这是完全不安全的。我无法深入研究源代码并进行更改。如果有可以使用SHA1的信息,我将不胜感激。我刚刚阅读了BCrypt,这很棒,但是我不能真正更改源代码以适合BCrypt。我设法将SHA1这样注册: 但是我根本无法登录。我做错了吗?好像La

  • 问题内容: 现在,我有一个PHP文件,该文件执行MYSQL查询,然后计算像这样的行: 这可以正常工作,但是我试图将所有PHP文件更改为使用PDO。那么如何用PDO做到这一点呢? 问题答案: 要么 您也可以使用它来询问数据是否存在或被选择: 或使用您的变量:

  •  创造不息,交付不止 Introduction A quick reference guide (cheat sheet) for Laravel 5.1 LTS, listing artisan, composer, routes and other useful bits of information. We intend to build this Cheat Sheet more asse

  • 问题内容: 我知道的指示: JPA持久性机制读取“ persistence.xml”文件,查找名为“ persistence-unit- name”的持久性单元,并基于该持久性单元构造EntityManagerFactory。 我的问题是,如何强制JPA 使用不同于“ persistence.xml”的文件 ?例如“ persistence-test.xml”。 问题答案: 尽管单个JPA提供程序

  • 这些散列密码的方法中,哪一种最安全,最难发现散列冲突? 仅MD5 仅SHA1 通过SHA1MD5

  • Laravel 5 Bundles-Modules Bundles-Modules 是一个把应用分成多个包,一个包分成若干个小模块。 这是 laravel5 框架的 bundle 包系统,每个 bundle 都 module 模块化,模块与模块之前互不影响,全新开发目录,适合团队开发,松耦合,可以抛弃自带的 APP 目录了,使用全新的开发目录结构/,使开发变得更简单。 开发目录结构: bundle