Authentication Laravel : Auth::login($user) ne marche pas !

Par Tarik El Jabiri, il y a 9 ans


Bonjour,

Je suis debutant avec Laravel, j'ai crée un systeme d'inscription et il marche bien avec le cryptage de mot de passe mais le probleme c'est dans l'Authentication pour creer un session pour un utilisateur. Voila mon code :

<?php namespace App\Http\Controllers\Auth; use App\Http\Requests\StoreUser; use App\User; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; class RegisterController extends Controller { /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * */ public function register() { return view('Auth/register'); } /** * @param StoreUser $request * @return string */ public function store(StoreUser $request) { $user = new User(); $data = $request->only(['nom', 'prenom', 'email']); $data['password'] = bcrypt($request->password); $user->fill($data); $user->save(); // Cette ligne suivante n'a aucun message d'erreur aucun effet sur l'application Auth::login($user); return redirect('/'); } }

J'ai pas d'erreurs pour comprendre de quoi il s'agit je suis bloqué.

Le code de l'Entity User

<?php namespace App; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Database\Eloquent\Model; class User extends Model implements Authenticatable { protected $fillable = [ 'nom', 'prenom', 'email', 'password', 'created_at', 'updated_at' ]; /** * Get the name of the unique identifier for the user. * * @return string */ public function getAuthIdentifierName() { return 'email'; } /** * Get the unique identifier for the user. * * @return mixed */ public function getAuthIdentifier() { return $this->getAttribute('email'); } /** * Get the password for the user. * * @return string */ public function getAuthPassword() { return $this->getAttribute('password'); } /** * Get the token value for the "remember me" session. * * @return string */ public function getRememberToken() { return null; } /** * Set the token value for the "remember me" session. * * @param string $value * @return void */ public function setRememberToken($value) { return null; } /** * Get the column name for the "remember me" token. * * @return string */ public function getRememberTokenName() { return null; } }

c'est la que je crois que j'ai mis un erreur mais l'application est silencieuse.
Je veut une solution ou remarque sur mon code.

Et merci d'avance

11 réponses

Azorgh, il y a 9 ans

Bonjour,

Lorsque tu créé ton utilisateur, tu es déjà connecté à une session non ?

Tarik El Jabiri, il y a 9 ans

Bonjour,
Non car j'ai debugge la session elle est null

AlexJM, il y a 9 ans

Bonjour,

Sinon, une autre méthode est de le faire via attempt :

Auth::attempt($request->only(['email', 'password']));

Normalement ça devrait fonctionner

Ou sinon peut-être :

Auth::loginUsingId($user->id);

Mais je ne vois pas le soucis avec le Auth::login :/

Tarik El Jabiri, il y a 9 ans

bonjour,
Ca ne marche pas.
J'ai crée un autre projet mais j'ai utilisé l'authentication fournit par défaut elle marche tres bien. le soucis c'est je veut creer le systeme manuallement.
j'ai essayé tout les méthode sans resultat.
par rapport la configuration dans config/auth.php, j'ai laissé ça par defaut je crois que je devrai adapté ça non.
aussi j'ai essayé de connecté par une fonction login mais sans resultat le meme probleme.
le grand probleme c'est que je ne vois pas des erreurs c'est bizard :(

en tous cas merci a vous .

Spiker, il y a 9 ans

Hello,

Vérifie que t'es routes sont bien dans le middleware 'web', et que dans ton "HTTP/Kernel.php" le middleware " \Illuminate\Session\Middleware\StartSession::class" a bien été chargé dans ce dernier.

Tarik El Jabiri, il y a 9 ans

Salut,
la class est charger par defaut dans web mais je sais pas pour quoi ne marche pas j'ai laissé ce projet a côte mais je vais trouvé le couci ;)

pour le moment je cherche, teste mais sans resultat.

en tous cas merci.

imen, il y a 9 ans

InvalidArgumentException in UrlGenerator.php line 304:
Route [login] not defined.
j ai une prblm au niveau du route et j c pa quoi et comment faire

Tarik El Jabiri, il y a 9 ans

Salu,
Montrer un extrait de code des routes .

imen, il y a 9 ans
Route::get('salut', function () { return 'salut les gens'; }); Route::get('salut/{slug}-{id}', ['as'=>'salut' ,function ($slug,$id) { return "lien: /salut/slug-$id"; }]) ->where('name', '[a-z 0-9\-]*') ->where('id', '[0-9]*'); Route::get('/', function () { return view('welcome');
Tarik El Jabiri, il y a 9 ans

salut,
donc tu n'as pas defini une route pour le login .
example :

Route::get('/login', 'AuthController@login')->name('login')

je voix dans ton code tu utilise des closure pas des controller c'est mieux d'utiliser des controllers pour separer la logique.