Laravel 5.6 MethodNotAllowedHttpException, когда пользователь вышел из системы, но отправил запрос на публикацию
Я использую Sentinel для аутентификации. Пока я вхожу, все работает хорошо. Но когда я вышел из системы (например, удалить все значения в persistences
стол) и я на something.blade.php
и нажмите link
который вызывает запрос на публикацию (см. фрагмент кода ниже), я буду перенаправлен на страницу входа. После входа в систему я получаю следующую ошибку Laravel:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
Маршрут в web.php
:
Route::post('something/{xtype}/{xid}/execute/{yid}', 'MyController@execute');
Логика контроллера в MyController.php
:
public function execute($xtype, $xid, $yid)
{
// business logic
return back();
}
Посмотреть something.blade.php
:
<form action="/something/{{ $something->xtype }}/{{ $something->xid }}/execute/{{ $others->yid }}" method="POST" id="y_{{ $others->yid }}">
{!! csrf_field() !!}
</form>
<a type="button" href="#" onClick="document.getElementById('y_{{ $others->yid }}').submit()">
Промежуточное AdminMiddleware.php
:
public function handle($request, Closure $next)
{
if (Sentinel::check())
{
if (Sentinel::getUser()->roles()->first()->slug == 'admin')
{
return $next($request);
}
}
return redirect()->guest('/login')
->with(['error' => "You do not have the permission.."]);
}
}
Редактировать:
После входа я столкнусь с LoginController
и будет выполнен следующий код:
return redirect()->intended($fallbackUrl);
Поскольку я все еще новичок в Laravel, мне сложно отлаживать глубоко внутри фреймворка. Любые идеи / предложения с вашей стороны?
Все приветствуется! Заранее спасибо!
1 ответ
Эта ошибка появляется при попытке опубликовать URL-адрес, настроенный для получения запросов или наоборот. Вы должны проверить в этом направлении!
В своей форме вы не указали метод, в то время как на маршрутах вы указали тип метода, который должен использовать ваш маршрут.