Я переместил свой Laravel проект в AWS экземпляр. Все оказалось работать нормально. Когда я go для входа в систему, я получаю ошибку "The GET method is not supported for this route. Supported methods: POST."
, которая возникает в функции login(Request $request){}
, найденной здесь ./vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
Я пробовал проект на экземплярах Ubuntu и Redhat и получаю ту же ошибку. Я пытаюсь найти другие способы устранения этой ошибки. Любой совет будет оценен.
форма
<form class="form" method="POST" action="{{ route('2faconfirm') }}">
маршруты
Route::post('2faverify', [ 'as' => '2faverify', 'uses' => 'MFAController@verify']);
Route::post('2faconfirm', [ 'as' => '2faconfirm', 'uses' => 'MFAVerifyController@confirm']);
The process I took to migrate
- Dump mysql db for lavarel
- import laravel to new instances
- install php/mysql/composer/npm
- copy over files
- edit .env file to new db
@ Айнбер поднял хорошую мысль. Я использую перенаправление в коде.
public function 2faverify(Request $request)
{
$response = $this->2faSendCode($request->get('email'), $request->get('password'));
$client = app()->make(CognitoClient::class);
if($client->getUserStatus($request->get('email')) == 'FORCE_CHANGE_PASSWORD'){
return view('auth.passwords.force-password-reset', ['session'=>$response['Session']]);
}
if(gettype($response) != 'string'){
return view('2faverify',['session' => $response['Session']]);
}else{
return redirect('login')->withErrors([$response]);
}
}
public function 2faconfirm(Request $request){
$email = $request->get('email');
$password = $request->get('password');
$session = $request->get('session');
$2faCode = $request->get('2facode');
$client = app()->make(CognitoClient::class);
if($client->confirm2fa($email, $password,$session, $2faCode)){
$this->login($request);
return redirect('dashboard');
}else{
return redirect('login')->withErrors(['Code expired!']);
}
}
, но я не понимаю, как это может быть проблемой, так как если он выдает ошибку на return redirect(
, это означает, что я по крайней мере успешно вошел в систему. Но я ' m не вошел в систему после этой ошибки.
php artisan optimize
ошибки ниже
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
LogicException : Unable to prepare route [api/user] for serialization. Uses Closure.
at /var/www/html/wave-app/vendor/laravel/framework/src/Illuminate/Routing/Route.php:917
913| */
914| public function prepareForSerialization()
915| {
916| if ($this->action['uses'] instanceof Closure) {
> 917| throw new LogicException("Unable to prepare route [{$this->uri}] for serialization. Uses Closure.");
918| }
919|
920| $this->compileRoute();
921|
Exception trace:
1 Illuminate\Routing\Route::prepareForSerialization()
/var/www/html/wave-app/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php:62
2 Illuminate\Foundation\Console\RouteCacheCommand::handle()
/var/www/html/wave-app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32
Please use the argument -v to see more details.
Я исправил эту ошибку, удалив следующее из маршрутов / API. php
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Я могу запустить оптимизацию без ошибок
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
Routes cached successfully!
Files cached successfully!
, но это не исправило ошибку POST при входе в систему.