2 votes

Laravel 5.4 Multi auth - Auth::guard()->user() vide

J'ai créé un test multi authentification dans Laravel 5.4. Il utilise des middlewares personnalisés, des fournisseurs Eloquent personnalisés, etc. Le flux d'authentification fonctionne, je peux me connecter des deux manières. Mais si l'utilisateur est connecté, dans le contrôleur d'accueil, quand je veux vérifier l'utilisateur avec Auth::user() o Auth::guard()->user() c'est vide. Le site Auth::guard() est également vide. Mais je ne comprends pas, pourquoi ? Il devrait contenir l'instance de l'utilisateur signé, n'est-ce pas ?

De même, le $request->getUserResolver() dit que la garde est nulle... o.O

Qu'est-ce que j'ai fait de mal ?

C'est ici mon repo de test, si vous voulez vérifier mon code.

Merci d'avance !

Edit 1 :

Dans le \app\Http\Controllers\Employee\HomeController.php le site Auth::guard()->user() et le Auth::user() sont vides.

namespace App\Http\Controllers\Employee;

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

class HomeController extends Controller
{

    public function __construct(Request $request)
    {
        $this->middleware('auth.employee:employee');
    }

    public function index(Request $request)
    {
        $users[] = Auth::user();
        $users[] = Auth::guard()->user();
        $users[] = Auth::guard('employee')->user();

        dd($users);

        return view('employees.home.index');
    }
}

2voto

Ganesh K Points 401

Auth::shouldUse(your_guard_name) ;
appelez ceci dans votre fonction de connexion

0voto

Ankit Jain Points 498

Changez le nom du pilote dans le config/auth.php comme

'employees' => [
        'driver' => 'eloquent',
        'model' => App\Models\UserEmployee::class,
    ],
    'customers' => [
        'driver' => 'eloquent',
        'model' => App\Models\Customer::class,
    ],

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X