Проблема с Laravel при вызове API Laravel из другого проекта LaravelPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема с Laravel при вызове API Laravel из другого проекта Laravel

Сообщение Anonymous »

Я работаю с двумя проектами Laravel, Project One и Project Two, работающими на моем локальном хосте. Первый проект выполняет вызовы API к Проекту два. Оба проекта используют отдельные базы данных MySQL, при этом Проект второй настроен на использование соединения, отличного от стандартного, с именем mysql_oth в config/database.php. Однако когда Project One выполняет вызов API к Project Two, Project Two пытается использовать соединение с базой данных mysql по умолчанию (Project one) вместо mysql_oth. Эта проблема не возникает при отправке запросов к Проекту два напрямую через Postman; в этом случае используется правильное соединение mysql_oth.
Вот что я проверил на данный момент:
  • Соединение mysql_oth правильно настроено в файле
    config/database.php проекта 2.
  • Прямые вызовы к конечной точке API проекта 2 from
    Postman правильно использует соединение mysql_oth.
  • Проблема возникает только тогда, когда Project One выполняет вызов API к Project Two; каким-то образом это приводит к тому, что Второй проект возвращается к соединению mysql по умолчанию (Первый проект). Я
  • Я очистил конфигурацию, маршрут и кеш Laravel с помощью
    команд artisan в обоих проектах.
Код первого проекта:

Код: Выделить всё

$request->authenticate();

$request->session()->regenerate();

$response = Http::post('http://localhost:82/laravel/project_2/api/appLogin', [
'email' => $request->email,
'password' => $request->password,
])->throw();

if ($response->successful()) {
$token = $response->json('token');

$request->session()->put('apptoken', $token); // Save token in session
return redirect()->intended(RouteServiceProvider::HOME);
} else {

Auth::guard('web')->logout();

$request->session()->invalidate();
$request->session()->regenerateToken();

return redirect(url('login'))->withErrors(['email' => 'The provided credentials are incorrect -- .']);
}
Код второго проекта:

Код: Выделить всё

public function login(Request $request)
{
$credentials = $request->validate([
'email' => 'required|email',
'password' => 'required',
]);

Log::info('API call sent', [
'method' => request()->method(),
'url' => request()->url(),
'data' => request()->all(),
]);
if (Auth::attempt($credentials)) {
// Authentication successful
$token = auth()->user()->createToken('authToken')->plainTextToken;
return response()->json(['token' => $token], 200);
} else {
// Authentication failed
return response()->json(['message' => 'Invalid credentials'], 401);
}
}
Настройки ENV:
Первый проект

Код: Выделить всё

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project_one,
Проект второй

Код: Выделить всё

DB_CONNECTION=mysql_oth
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project_two
Вопросы:
  • Почему Проект второй переключается на соединение с базой данных по умолчанию (Первый проект) при вызове из Проекта один и как я могу это предотвратить?
  • Существует ли специфичная для Laravel конфигурация или аспект времени выполнения, который я мог бы упустить из виду и который мог бы вызвать такое поведение?
    />
Будем очень признательны за любые рекомендации и идеи. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/781 ... el-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»