代码之家  ›  专栏  ›  技术社区  ›  Error404 Pasa89

拉雷维尔总是回302

  •  0
  • Error404 Pasa89  · 技术社区  · 8 年前

    我创建了一个laravel rest api。我的路线是用 Route::apiResource() . 身份验证是使用passport设置的,并按预期工作。

    现在,我尝试使用附加到的中间件来实现管理角色 store , update delete 在我的控制器中:

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

    我想让我的申请回复 403 Insufficient permissions 如果用户不是管理员。 为了 GET 它按预期工作,但对于PUT请求,laravel总是返回一个带有 302 Found .


    AdminOnly中间件

    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 回复  |  直到 8 年前
        1
  •  1
  •   Error404 Pasa89    8 年前

    我通过在 Symfony\Component\HttpFoundation\RedirectResponse 类(感谢@jedrzej.kurylo)并检查laravels errorlog中生成的堆栈跟踪( storage/logs/laravel.log ) 从未调用adminOnly中间件,因为我忘记在请求中包含id( /person 而不是 /person/{id} )。这导致我的默认路由触发并重定向到应用程序库。

    推荐文章