J'utilise la fonction de connexion manuelle dans Laravel 5.5. Coincé dans la connexion. Et vérifie tous les (5 pertinents) liens de pile et n'a trouvé aucun indice dessus.
La réussite est une fois que l'utilisateur est enregistré, connectez-vous automatiquement à cet utilisateur.
L'erreur est
"Erreur de type: l'argument 1 transmis à Illuminate\Auth\SessionGuard :: login () doit implémenter l'interface Illuminate\Contracts\Auth\Authenticatable, chaîne donnée, appelée dans Server/vendor/laravel/framework/src/Illuminate/Auth/AuthManager. php en ligne 294 ◀ "
if ($validator->fails()) {
// $messages = $validator->messages();
return Redirect::to('register')
->withErrors($validator)
->withInput();
} else {
$email = Input::get('email');
$user = new user;
$user->name = Input::get('name');
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->save();
// $userMail = $user->find($email);
$userMail = User::where('email','=',$email)->first();
Auth::login($userMail->email, TRUE);
est-ce que je fais quelque chose de mal. Guidez-moi s'il-vous-plaît.
La fonction de connexion nécessite un utilisateur de type Authenticatable
et vous venez de donner email
qui est une chaîne qui explique pourquoi vous obtenez cette erreur, soit utilisez Auth::loginUsingId($id);
$user = User::where('email','=',$email)->first();
Auth::loginUsingId($user->id, TRUE);
Ou juste
Auth::login($user);
Au lieu de cela
Auth :: login ($ userMail-> email, TRUE);
Utilisez ceci
Auth :: login ($ user-> id, TRUE);
$email = $request->email;
$password = md5($request->password);
if ($request->remember_me == 1) {
$cookie = Cookie::queue('username', $email, time() + 31536000);
} else {
$cookie = Cookie::queue('username', '', time() - 100);
}
$user = DB::table('tbl_adminuser')->where('email_address', $email)->where('password', $password)->first();
$request->session()->put('userData', $user);
=> Vous pouvez vous connecter manuellement comme ceci dans laravel
La fonction Auth::login()
attend un objet Authenticable. Si vous n'avez pas joué avec la classe User
, ce sera ce dont vous avez besoin pour passer.
Auth::login($user, true);
Référence: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login
Utilisez simplement Auth::login($userMail, TRUE);
au lieu de Auth::login($userMail->email, TRUE);
Pour plus d'informations, vérifiez: https://laravel.com/api/5.5/Illuminate/Auth/SessionGuard.html#method_login
Vous devez passer/renvoyer le $user
comme ça
if ($validator->fails()) {
// $messages = $validator->messages();
return Redirect::to('register')
->withErrors($validator)
->withInput();
} else {
$email = Input::get('email');
$user = new user;
$user->name = Input::get('name');
$user->email = Input::get('email');
$user->password = Hash::make(Input::get('password'));
$user->save();
//
Auth::login($user);
OR
Auth::loginUsingId($user->id, TRUE);