Partage
  • Partager sur Facebook
  • Partager sur Twitter

Laravel : Erreur authentification passport

    18 juillet 2019 à 19:31:30

    Bonsoir,

    Je suis en train de faire un projet sur laravel qui se compose d'une partie web et d'une api. J'ai fait mes routes dans les fichiers correspondant donc api.php et web.php mais dès que j'essaie d'ajouter l'authentification ça ne fonctionne plus.

    J'arrive à me connecter à la partie web mais pas à l'api quand j'utilise passport. J'ai toujours le même message de retour lors ce que je fais ma requête dans Postman qui est : Unauthorized.

    Je souhaite m'authentifier grâce à deux tables différentes, l'un pour la partie web et l'autre pour l'api qui servira à mon application mobile.

    Je vous mets mon code en espérant que je me sois exprimé correctement et que quelqu'un ai déjà résolu ce problème.

    auth.php

    <?php

    return [

    'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
    ],


    'guards' => [
    'web' => [
    'driver' => 'session',
    'provider' => 'gestionnaires',
    ],

    'api' => [
    'driver' => 'passport',
    'provider' => 'clients',
    'hash' => true,
    ],
    ],


    'providers' => [
    'users' => [
    'driver' => 'eloquent',
    'model' => App\User::class,
    ],

    'gestionnaires' => [
    'driver' => 'eloquent',
    'model' => App\Gestionnaire::class,
    ],

    'clients' => [
    'driver' => 'eloquent',
    'model' => App\Client::class,
    ],

    // 'users' => [
    // 'driver' => 'database',
    // 'table' => 'users',
    // ],
    ],

    'passwords' => [
    'users' => [
    'provider' => 'users',
    'table' => 'password_resets',
    'expire' => 60,
    ],
    ],

    ];

    Le contrôleur pour me loguer l'api

    <?php

    namespace App\Http\Controllers\Auth;

    use App\User;
    use Carbon\Carbon;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Auth;

    class AuthController extends Controller
    {
    public function login(Request $request) {
    $request->validate([
    'email' => 'required|string|email',
    'password' => 'required|string',
    //'remember_me' => 'boolean'
    ]);
    $credentials = request(['email', 'password']);
    if(!Auth::attempt($credentials))
    return response()->json([
    'message' => 'Unauthorized'
    ], 401);
    $user = $request->user();
    $tokenResult = $user->createToken('Personal Access Token');
    $token = $tokenResult->token;
    if ($request->remember_me)
    $token->expires_at = Carbon::now()->addWeeks(1);
    $token->save();
    return response()->json([
    'access_token' => $tokenResult->accessToken,
    'token_type' => 'Bearer',
    'expires_at' => Carbon::parse(
    $tokenResult->token->expires_at
    )->toDateTimeString()
    ]);
    }

    public function user(Request $request)
    {
    return response()->json($request->user());
    }
    }

    Le model que je souhaite utiliser pour me connecter à l'api

    <?php

    namespace App;

    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Laravel\Passport\HasApiTokens;

    class Client extends Authenticatable
    {

    use HasApiTokens, Notifiable;

    protected $fillable = [
    'name', 'email', 'password',
    ];

    protected $hidden = [
    'password', 'remember_token',
    ];

    }

    api.php

    <?php

    use Illuminate\Support\Facades\Route;


    Route::group([
    'prefix' => 'auth'
    ], function () {
    Route::post('login', 'Auth\AuthController@login')->name('login');
    Route::post('register', 'Auth\AuthController@register');
    Route::group([
    'middleware' => 'auth:api'
    ], function() {
    Route::get('logout', 'Auth\AuthController@logout');
    Route::get('user', 'Auth\AuthController@user');
    });
    });

    Merci d'avance pour votre temps.

    -
    Edité par TobiasBeecher 18 juillet 2019 à 19:32:54

    • Partager sur Facebook
    • Partager sur Twitter

    Laravel : Erreur authentification passport

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown