老项目和 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. ],
夜河资源网提供的所有内容仅供学习与交流。通过使用本站内容随之而来的风险以及法律责任与本站无关,所承担的法律责任由使用者承担。
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!