Laravel5.5 在模型中连接多个数据库以及修改密码加密方式为md5加密

热门标签

, ,
admin

发表文章数:3278

老项目和 laravel 项目对接时需要在模型中连接多个数据库,并且修改laravel的密码加密方式为md5加密。并且不影响其他地方。

一、连接多个数据库

当你的项目需要两个数据库时,并且是可以在模型中使用的。

首先在 config/database.php 中的 connections 定义你要连接的其他数据库配置

  1. \'msyql\' => [...],
  2. \'other\' => [
  3. \'driver\' => \'mysql\',
  4. \'host\' => env(\'OTHER_OTHER_DB_HOST\', \'127.0.0.1\'),
  5. \'port\' => env(\'OTHER_DB_PORT\', \'3306\'),
  6. \'database\' => env(\'OTHER_DB_DATABASE\', \'forge\'),
  7. \'username\' => env(\'OTHER_DB_USERNAME\', \'forge\'),
  8. \'password\' => env(\'OTHER_DB_PASSWORD\', \'\'),
  9. \'unix_socket\' => env(\'OTHER_DB_SOCKET\', \'\'),
  10. \'charset\' => \'utf8mb4\',
  11. \'collation\' => \'utf8mb4_unicode_ci\',
  12. \'prefix\' => env(\'OTHER_DB_PREFIX\', \'\'),
  13. \'strict\' => true,
  14. \'engine\' => null,
  15. ],

然后在 .env 文件中配置你数据库配置即可

  1. OTHER_DB_CONNECTION=mysql
  2. OTHER_DB_HOST=127.0.0.1
  3. OTHER_DB_PORT=3306
  4. OTHER_DB_DATABASE=
  5. OTHER_DB_USERNAME=
  6. OTHER_DB_PASSWORD=
  7. OTHER_DB_PREFXI=

最后创建 model 文件 app/Service.php

  1. <?php
  2. namespace App\Model;
  3. use App\User;
  4. class Service extends User
  5. {
  6. //采用连接配置
  7. protected $connection = \'other\';
  8. //数据表名
  9. protected $table = \'service\';
  10. }

如果只是单独的想在控制层使用

  1. $data = DB::connection(\'other\')->get(1);

二、修改加密方式

只修改注册和登录为md5加密方式,不影响其他hash加密。

在 app 下创建 Custom.php

  1. <?php
  2. namespace App;
  3. use Illuminate\Contracts\Hashing\Hasher;
  4. class Custom implements Hasher
  5. {
  6. /**
  7. * @param string $value
  8. * @param array $options
  9. * @return string
  10. */
  11. public function make($value, array $options = [])
  12. {
  13. return md5($value);
  14. }
  15. /**
  16. * Check the given plain value against a hash.
  17. *
  18. * @param string $value
  19. * @param string $hashedValue
  20. * @param array $options
  21. *
  22. * @return bool
  23. */
  24. public function check($value, $hashedValue, array $options = [])
  25. {
  26. if(empty($hashedValue)){
  27. return true;
  28. }
  29. return $this->make($value) === $hashedValue;
  30. }
  31. /**
  32. * Check if the given hash has been hashed using the given options.
  33. *
  34. * @param string $hashedValue
  35. * @param array $options
  36. *
  37. * @return bool
  38. */
  39. public function needsRehash($hashedValue, array $options = [])
  40. {
  41. return false;
  42. }
  43. }

在 app/Providers 下创建 CustomServiceProvider.php

  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Auth\EloquentUserProvider;
  4. class CustomServiceProvider extends EloquentUserProvider
  5. {
  6. //继承EloquentUserProvider类,调用父类的构造函数
  7. public function __construct($hasher, $model)
  8. {
  9. parent::__construct($hasher, $model);
  10. }
  11. /**
  12. * Bootstrap the application services.
  13. * @return void
  14. */
  15. public function boot()
  16. {
  17. //
  18. }
  19. /**
  20. * Register the application services.
  21. * @return void
  22. */
  23. public function register()
  24. {
  25. //
  26. }
  27. }

在 app/Providers/AuthServiceProvider.php 中 boot 方法里添加

  1. //头部需要引入命名
  2. use Auth;
  3. use App\Custom;
  4. Auth::provider(\'Custom\', function ($app) {
  5. //你定义的 guards 中 providers 配置
  6. $model = config(\'auth.providers.service.model\');
  7. return new CustomServiceProvider(new Custom, $model);
  8. });

修改 config/auth.php 里的 providers

  1. \'providers\' => [
  2. \'service\' => [
  3. //定义为md5
  4. \'driver\' => \'Custom\',
  5. \'model\' => App\Model\Service::class,
  6. ],

未经允许不得转载:作者:admin, 转载或复制请以 超链接形式 并注明出处 夜河资源网
原文地址:《Laravel5.5 在模型中连接多个数据库以及修改密码加密方式为md5加密》 发布于2019-12-12

分享到:
赞(0) 打赏

评论 抢沙发

8 + 1 =


撰写不易~如果您觉得文章对您有帮助的话可以打赏我哦~谢谢亲亲~

支付宝扫一扫打赏

微信扫一扫打赏

外服网游加速器破解版
包含腾讯网游加速器、海豚网游加速器等八款知名加速器,可加速外服游戏,永久包售后包更新,不定时添加新款破解版加速器!
切换注册

登录

忘记密码 ?

切换登录

注册