首页 > 解决方案 > 身份验证不适用于 laravel 中的多个数据库

问题描述

我有两个不同的数据库:一个用于印度,另一个用于加拿大。

我已经在 database.php 文件中设置了配置,并且迁移和播种工作正常。

管理员模型:

class Admin extends Authenticatable
{
  protected $connection = 'mysql_india';
}

登录方式:

public function login(LoginRequest $request)
{
  $conn = 'mysql_canada';
  if($request->input('country') == '+91'){
    $conn = 'mysql_india';
  }

  $someModel = new Admin;
  $someModel->setConnection($conn);
  $model = $someModel->checkEmailExist($request->input('email'))->first();

  if($model){  // if email found
    if(Hash::check($request->input('password'),$model->password)){  // checking password
      // dd($model); // i put die here it work till here 
      Auth::guard('admin')->login($model);  // login  admin
    }
    ........
    //rest of code
  }
  ........
  //rest of code
}

在登录时,我正在更改连接国家/地区并检查用户,它还根据国家/地区查找用户,但其中不是身份验证用户。

如果用户来自印度,那么它正在工作(因为我在模型中设置了默认连接)。但如果用户来自加拿大,则它不起作用(没有错误,只是再次重定向到登录页面)。

简而言之,默认连接适用于 Auth。

所以要动态地做 Auth

标签: laravellaravel-5.8laravel-5.7laravel-authentication

解决方案


推荐阅读