Search code examples
laravelmiddleware

Request input returns null in Middleware


I'm guarding a route via a middleware check for a valid token, like thus;-

http://localhost:8097/init/my-secret-token


Route::get('/init/{token}', [MyController::class, 'init'])->middleware('validToken');


// Kernel.php
protected $routeMiddleware = [
    'validToken' => \App\Http\Middleware\EnsureTokenIsValid::class,
 ];


// App/Http/Middleware/EnsureTokenIsValid.php
class EnsureTokenIsValid
{

 public function handle(Request $request, Closure $next)
 {
    dd($request->input('token')); // returns null

    if($request->input('token') !== 'my-secret-token'){
        return redirect('home');
    }
    return $next($request);
 }
}

$request->input('token') returns null for some reason? I've tried the following:-

http://localhost:8097/init/token/my-secret-token & http://localhost:8097/init?token=my-secret-token - only receive a 400


Solution

  • have you tried:

    $request->route('token')
    

    This should take parameter directly from your route.