我创建了一个包含多个数据库的Laravel 5.2 App。 在每个数据库中都有一个用户表。
登录信息如下: 用户@帐户和密码。
我创建了自己的身份验证方法。 auth方法工作正常,但我需要app / user Class中此用户的连接名称。
连接名称存储在用户行中。
这是我的登录信息:
public function postLogin(Request $request)
{
//pass through validation rules
$this->validate($request, ['username' => 'required', 'password' => 'required']);
$usernameatacc = $request->get('username');
$usernameatacc = explode('@', $usernameatacc);
$username = $usernameatacc[0];
$account = $usernameatacc[1];
$password = $request->get('password');
$acc_db = DB::table('accounts')->select('account_db')->where('accountname', $account)->first();
$checkdb = DatabaseConnectorClass::checkDB($acc_db->account_db);
if($checkdb){
$test = DatabaseConnectorClass::createTenantConnection($acc_db->account_db);
}
DB::reconnect();
$credentials = [
'name' => trim($username),
'password' => trim($password),
'account_db' => trim($acc_db->account_db)
];
$remember = $request->has('remember');
//log in the user
if (Auth::attempt($credentials, $remember)) {
return redirect()->intended('home');
}
//show error if invalid data entered
return redirect()->back()->withErrors('Login/Pass do not match')->withInput();
}
这很有效,他在正确的数据库中找到了合适的用户。现在我的问题是,如何将$ acc_db-> account_db传递给app / user Class?
在app / user类中我创建了一个函数:
public function changeConnection($conn){
DatabaseConnectorClass::createTenantConnection($conn);
$this->connection = $conn;
}
当我在app / user中执行此操作时:
public function __construct()
{
$this->changeConnection('test_91550_94');
}
这项工作,但登录后我需要动态...