Ich möchte die Datenbankverbindung nach der Benutzeranmeldung in der Laufzeit ändern. Ich benutze den Methodensatz von Config Facade. Ich weiß, dass ich es nur auf Middleware oder Controller-Konstruktor verwenden kann. Also habe ich dieseLaravel Datenbankparameter zur Laufzeit ändern
Route::get("login", "[email protected]");
Route::group(["middleware" => "test"], function() {
Route::post("login", "[email protected]");
});
Und dann habe ich die "Test" Middleware nach dem Login aufgerufen einreichen:
public function handle($request, Closure $next) {
// Validazione dei dati
$validator = Validator::make($request->all(), [
"codice_azienda" => "required",
"username" => "required",
"password" => "required"
]);
if ($validator->fails()) {
return redirect()->back()->withInput()->withErrors($validator);
}
// Verifico i dati immessi
$codice_azienda = $request->get("codice_azienda");
$username = $request->get("username");
$password = $request->get("password");
$objOperatore = new Operatore();
$cliente = $objOperatore->loginOperatore($codice_azienda, $username, $password);
if (empty($cliente)) {
throw new \App\Exceptions\LoginFailedException;
}
Config::set("DB_HOST", Crypt::decrypt($cliente->Server));
Config::set("DB_DATABASE", $cliente->NomeDB);
Config::set("DB_USERNAME", Crypt::decrypt($cliente->Username));
Config::set("DB_PASSWORD", Crypt::decrypt($cliente->Password));
$operatori = Operatore_Model::all();
\App\Http\Controllers\Log_Controller::debug($operatori, true);
return $next($request);
}
Aber die metoed aller() Operatore_Model Rückkehr nicht alles
Logs Diesen Fehler zurücksenden:
"[2017-02-16 16:44:52] local.ERROR: exception 'PDOException' with message 'SQLSTATE[42S02]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'Operatori'.' in C:\xampp\htdocs\dashboard\www\e730\vendor\laravel\framework\src\Illuminate\Database\Connection.php:323"
Ich möchte eine Multi-DB-Verbindung verwenden, eine für jeden Kunden.
Wenn ich einen Vorschlag machen kann. Sie könnten es sich selbst erleichtern, wenn Sie diese Logik für das Ereignis 'auth.login' in einen Listener einfügen. In diesem Fall müssen Sie sich keine Gedanken darüber machen, wie Sie eine "LoginFailedException" - oder "validationg" -Nutzername und ein Passwort eingeben. – user3158900