web-dev-qa-db-de.com

Laravel Passport-Route [Login] nicht definiert

ich benutze Laravel Pass für Auth

in route api.php 

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

aber wenn Sie localhost: 8000/api/todos öffnen, sehe ich den folgenden Fehler

 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

Ich möchte, wenn der Benutzer nicht authentifiziert wurde Keine Seite weiterleiten und nur die Seite anzeigen 

2
MJ7

Haben Sie die oben angegebene URL direkt in der Browser-Suchleiste eingegeben? Wenn Sie den falschen Weg gewählt haben, weil Sie auch das API-Token mit Ihrer Anforderung eingeben müssen !!

Um zu überprüfen, ob eine Anforderung ein Token enthält oder nicht, erstellen Sie Ihre eigene Middleware.

Befehl zum Erstellen von Middleware

php artisan make:middleware CheckApiToken

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

chenage Middleware-Methode zu 

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');
}

Wie dieses Ihre URL sollte so sein 

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

2
Ramzan Mahmood

Verwenden Sie Postman und setzen Sie den Header Accept: application/json. Andernfalls würde Laravel Passport niemals wissen, dass es sich um einen API-Client handelt, und auf eine/login-Seite für das Web umleiten.

3
Eki

Sie müssen außerdem einen weiteren Header hinzufügen. Key: Accept und value: application/json

0
Fazil Raza

Sie müssen außerdem einen weiteren Header-Schlüssel hinzufügen: X-Requested-With und Wert: XMLHttpRequest

0
Designer Coder