web-dev-qa-db-fra.com

Laravel Passport Route [login] non défini

j'utilise Laravel passport for auth

en route api.php 

Route::get('/todos', function(){
  return 'hello';
})->middleware('auth:api');

mais quand ouvert localhost: 8000/api/todos je vois l'erreur suivante

 InvalidArgumentException
Route [login] not defined.
 * @return string
 *
 * @throws \InvalidArgumentException
 */
public function route($name, $parameters = [], $absolute = true)
{
    if (! is_null($route = $this->routes->getByName($name))) {
        return $this->toRoute($route, $parameters, $absolute);
    }

    throw new InvalidArgumentException("Route [{$name}] not defined.");
}

/**
 * Get the URL for a given route instance.
 *
 * @param  \Illuminate\Routing\Route  $route
 * @param  mixed  $parameters
 * @param  bool   $absolute
 * @return string
 *
 * @throws \Illuminate\Routing\Exceptions\UrlGenerationException
 */
protected function toRoute($route, $parameters, $absolute)
{
    return $this->routeUrl()->to(
        $route, $this->formatParameters($p

Je veux si l'utilisateur n'était pas authentifié 

2
MJ7

Avez-vous entré l'URL susmentionnée directement dans la barre de recherche du navigateur? Si vous vous êtes trompé, vous devez également entrer le jeton de l'API avec votre requête__ !!

Pour vérifier si la requête inclut un jeton ou non, créez votre propre middleware.

Commande pour créer un middleware

php artisan make:middleware CheckApiToken

https://laravel.com/docs/5.6/middleware

méthode middleware chenage pour 

public function handle($request, Closure $next)
{
    if(!empty(trim($request->input('api_token')))){

        $is_exists = User::where('id' , Auth::guard('api')->id())->exists();
        if($is_exists){
            return $next($request);
        }
    }
        return response()->json('Invalid Token');
}

Comme ceci Votre url devrait être comme ceci 

http: // localhost: 8000/api/todos? api_token = API_TOKEN_HERE

2
Ramzan Mahmood

Utilisez Postman et définissez l'en-tête Accept: application/json, sinon Laravel Passport ne saura jamais qu'il s'agit d'un client API et sera donc redirigé vers une page/login pour le Web.

3
Eki

Vous devez également ajouter un autre en-tête. Clé: Accepter et valeur: application/json.

0
Fazil Raza

Vous devez également ajouter un autre en-tête Key: X-Requested-With et la valeur: XMLHttpRequest

0
Designer Coder