Laravel 中的哈希提供程序

Hash Provider in Laravel

我已经按照 this tutorial 创建了一个自定义哈希,并且我也在 Laravel 5.3 中实现了 Multi-Auth 系统(工作正常)但我想知道:

我可以在这些身份验证之间使用多个数据库哈希吗?

  1. 管理区(我可以默认使用bycrypt)
  2. 客户专区(我可以用md5举例)

这可能吗?

在你问之前:是的,这对我的项目来说是必需的!

如果您已经有一个工作的多重身份验证系统和一个使用 md5 的额外哈希器,您可以将它注入您的自定义身份验证提供程序。以下是您可能需要的可能步骤。

如果您只想要另一个哈希器,您可以尝试使用核心提供程序:

  1. 创建一个 My\Library\MyHasher 实施核心合约 https://github.com/illuminate/contracts/blob/master/Hashing/Hasher.php(如教程中所述)

  2. 在您的应用程序提供程序下的 AuthServiceProvider 启动方法中注册/注入它,类似这样:

    // 实例化或注入新的哈希器作为 $hasher

    Auth::provider('md5user', function($app, array $config) 使用 ($hasher) { return 新 \Illuminate\Auth\EloquentUserProvider\EloquentUserProvider($hasher, $config['model']); });

如果您希望能够调整提供程序功能:

  1. 创建一个类似于核心My\Library\MyUserProviderhttps://github.com/illuminate/auth/blob/master/EloquentUserProvider.php并更改您需要的

  2. 创建My\Library\MyHasher实施核心合约https://github.com/illuminate/contracts/blob/master/Hashing/Hasher.php

  3. 在您的应用提供商下的 AuthServiceProvider 引导方法中注册/注入它们:

    // 实例化或注入新的哈希器作为 $hasher

    Auth::provider('md5user', function($app, array $config) 使用 ($hasher) { return 新 \My\Library\MyUserProvider($hasher, $config['model']); });