Laravel всегда возвращается 302 на PUT - PullRequest
0 голосов
/ 06 июня 2018

Я создал REST API Laravel.Мои маршруты генерируются автоматически с Route::apiResource().Аутентификация настроена с использованием Passport и работает по назначению.

Теперь я попытался реализовать роль администратора с промежуточным программным обеспечением, которое я подключаю к store, update и delete в моем контроллере:

$this->middleware('admin-only', ['only' => ['store', 'update', 'delete']]);

Я хочу, чтобы мое приложение ответило 403 Insufficient permissions, если пользователь не является администратором.Для GET он работает как положено, но для запросов PUT Laravel всегда возвращает ответ с 302 Found.


AdminOnly Middleware

namespace App\Http\Middleware;

use Illuminate\Http\Response;
use Closure;
use Illuminate\Support\Facades\Auth;

class AdminOnly {
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next) {
        $user = Auth::user();

        if (!$user->admin) {
            return Response::create('Insufficient permissions', 403);
        }

        return $next($request);
    }
}

1 Ответ

0 голосов
/ 06 июня 2018

Я обнаружил свою ошибку, выдав исключение в конструкторе класса Symfony\Component\HttpFoundation\RedirectResponse (благодаря @ jedrzej.kurylo) и изучив полученную трассировку стека в журнале ошибок laravels (storage/logs/laravel.log).Промежуточное ПО AdminOnly никогда не вызывалось, потому что я забыл включить идентификатор в запрос (/person вместо /person/{id}).Это вызвало мой маршрут по умолчанию для запуска и перенаправления на базу приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...