Login by Api Token Laravel 5.4

4

I'm making a login by api_token using laravel 5.4

The route is defined as

Route::get('/test', 'Auth\[email protected]')->middleware('auth:api');

And if I do within the method:

dd(Auth::guard('api')->user())

the user shows me well, however when wanting to authenticate an instance of this user for the web guard doing the following does not work:

  public function authenticatedApiLogin() {

         Auth::guard('web')->login(Auth::guard('api')->user());


        return redirect()->route('venta.homes.index');

    }

By doing the above, close session and send me to the login screen.

If I print dd (Auth :: guard ('web')) it shows me:

SessionGuard {#674 ▼
  #name: "web"
  #lastAttempted: null
  #viaRemember: false
  #session: Store {#666 ▶}
  #cookie: CookieJar {#679 ▶}
  #request: Request {#40 ▶}
  #events: Dispatcher {#5 ▶}
  #loggedOut: false
  #tokenRetrievalAttempted: false
  #user: UsersModel {#681 ▶}
  #provider: EloquentUserProvider {#673 ▶}
}

The route I want to enter has the Auth middleware, the first time it enters it detects the Guard Api, the second one, after doing Auth :: guard ('web') - > login (Auth :: guard (' api ') - > user ()) the guard no longer detects me.

Seeing the log of the following method (class Authenticate), you see the following:

public function handle($request, Closure $next, ...$guards) {

    Log::info($guards);

    $this->authenticate($guards);

    return $next($request);
}
  

[2017-04-27 12:37:07] local.INFO: array (     0 = > 'api',   )
  [2017-04-27 12:37:07] local.INFO: array (   )

The Auth.php file has the following:

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */

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

    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */

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

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => MolInterno\Users\UsersModel::class,
        ],

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

    /*
    |--------------------------------------------------------------------------
    | Resetting Passwords
    |--------------------------------------------------------------------------
    |
    | You may specify multiple password reset configurations if you have more
    | than one user table or model in the application and you want to have
    | separate password reset settings based on the specific user types.
    |
    | The expire time is the number of minutes that the reset token should be
    | considered valid. This security feature keeps tokens short-lived so
    | they have less time to be guessed. You may change this as needed.
    |
    */

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

];
    
asked by Juan Pablo B 27.04.2017 в 17:25
source

0 answers