J'essaie de configurer mon application Laravel pour qu'elle utilise Passport et je suis bloquée lors du chargement de la classe dans mon AppServiceProvider.php. Voici ce que j'ai fait ...
<?php // AuthServiceProvider.php
namespace S1\Providers;
use Laravel\Passport\PassportServiceProvider;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as
ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
...
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensCan([
'client' => 'this is a api client test'
]);
}
}
.
<?php . // auth.php
...
return [
'guards' => [
'web' => [
'driver' => 'passport',
'provider' => 'users',
],
], ...
.
<?php // app.php
'providers' => [
...
Laravel\Passport\PassportServiceProvider::class,
....
.
<?php // AppServiceProvider.php
namespace S1\Providers;
use Illuminate\Support\ServiceProvider;
use S1\Providers\AppServiceProvider;
use Laravel\Passport\PassportServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// Enable Laravel Migrations Generator for development only
if ($this->app->environment() !== 'production') {
$this->app->register(\Way\Generators\GeneratorsServiceProvider::class);
$this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
}
}
}
Le résultat de cela devient l'erreur suivante:
[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'S1\Providers\Passport' not found
Cela fonctionnait, mais je devais vérifier et maintenant je ne peux pas dépasser cette erreur. Quelque chose se passe dans mes espaces de noms mais je ne peux pas comprendre quoi.
Dans votre AuthServiceProvider.php
, changez:
use Laravel\Passport\PassportServiceProvider;
à:
use Laravel\Passport\Passport;
On dirait que vous avez oublié d'importer votre passeport, essayez d'ajouter ceci
use App\Passport\Passport;
à votre AppServiceProvider
<?php // AppServiceProvider.php
namespace S1\Providers;
use App\Passport\Passport;
use Illuminate\Support\ServiceProvider;
use S1\Providers\AppServiceProvider;
use Laravel\Passport\PassportServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// Enable Laravel Migrations Generator for development only
if ($this->app->environment() !== 'production') {
$this->app->register(\Way\Generators\GeneratorsServiceProvider::class);
$this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
}
}
}
Veuillez vérifier votrecomposer.json, est-ce que laravel/passport l'a inclus ou non dans "require" comme ceci:
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
"laravel/passport": "^3.0",
"laravel/tinker": "~1.0"
},
sinon re-run
le compositeur doit avoir un passeport/laravel
Installez la version Passport
appropriée pour votre version Laravel
spécifique. Disons que vous avez Laravel 5.5, installez Passport 4.0:
composer require laravel/passport=~4.0
Pour vérifier votre version de Laravel:
php artisan --version
ou consultez "laravel/framework": "5.5.*",
sous l'objet require dans composer.json
.
espace de noms App\Providers;
utilisez Laravel\Passport\Passport;
utilisez Illuminate\Support\Facades\Gate; utilisez Laravel\Passport\PassportServiceProvider; utilisez Illuminate\Foundation\Support\Providers\AuthServiceProvider en tant que ServiceProvider;
la classe AuthServiceProvider étend ServiceProvider { /** * Les mappages de stratégie pour l'application . * * @var array */ protected $ policies = [ 'App\Model' => 'App\Policies\ModelPolicy', ];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
//
}
}