J'étais en train de créer un registre et de me connecter au début, tout se passait bien et une fois que j'ai terminé mon inscription, la connexion ne s'authentifiera pas, cela dit toujours des données invalides, croyez-moi, il y a des données valides qui ne fonctionnent tout simplement pas J'ai essayé de changer les informations d'identification de 'mot de passe' à 'Mot de passe' (même chose pour le nom d'utilisateur), toujours rien n'a fonctionné
LoginController, également avant que vous ne demandiez, je les ai liés avec web.php au formulaire de connexion et je l'ai fait ajoutez @csrf pour le jeton pour que tout fonctionne correctement
namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Input; use App\User; class LoginController extends Controller { /** * Handle an authentication attempt. * * @param \Illuminate\Http\Request $request * * @return Response */ public function authenticate(Request $request){ $username = $request->input('username'); $password = $request->input('password'); $credentials = ['username' => $username, 'password' => $password]; if (Auth::check()) { return redirect('/register'); } else { if (Auth::attempt($credentials)) { // Authentication passed... $request->session()->flash('loginsuccess', 'loginsuccess'); return redirect('/'); } else { $request->session()->flash('loginfailed', 'loginfailed'); return redirect('/'); } } } }
Je veux que l'utilisateur soit authentifié une fois qu'il s'est connecté. (P.S Je suis nouveau sur Laravel)
3 Réponses :
Il y a deux choses que je voudrais vérifier, le mot de passe est-il crypté après l'enregistrement d'un nouvel utilisateur?
Que se passe-t-il si vous imprimez les informations d'identification?
return redirect('/home'); // or ('/') depends on your routes
De plus, cette logique n'a pas de sens pour moi:
if (Auth::check()) { return redirect('/register'); ...
Pourquoi rediriger l'utilisateur s'il est déjà authentifié sur votre application? Vous devriez le rediriger vers la page principale, quelque chose comme ceci:
public function authenticate(Request $request){ $username = $request->input('username'); $password = $request->input('password'); dd($password); dd($username);// remove the first dd after your check to see the username output
De plus Laravel fournit un échafaudage d'authentification facile, vous pouvez par exemple créer un nouveau projet laravel new project
configurez une base de données et exécutez la commande suivante php artisan make: auth
cela vous construira la logique de connexion et d'enregistrement.
Oui, je hache le mot de passe et j'utilise le module Application / Utilisateur pour les enregistrer dans la base de données, je vais effectuer ce que vous avez énuméré ci-dessus et vous le renvoyer - De plus, les méthodes de redirection inutiles étaient uniquement à des fins de débogage , Je redirigerai un utilisateur vers un tableau de bord accessible uniquement aux utilisateurs authentifiés
$user = User::create([ 'username' => $input['username'], 'password'=> Hash::make($input['password']), ]);
/* |-------------------------------------------------------------------------- | 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' => [ // Make sure these values are correct 'driver' => 'eloquent', 'model' => App\Models\User::class, ],
Je commencerais par ces deux éléments. Si le problème persiste, vous pouvez également inclure le message d'erreur avec votre question pour aider à localiser le problème.
S'agit-il d'une authentification personnalisée? Si tel est le cas, je soupçonne que vous stockez le mot de passe haché lors de l'enregistrement, mais que vous ne le hachez pas lors de la connexion, cela signifie que les mots de passe ne correspondent pas.
Je vous recommande d'utiliser php artisan make: auth
de Laravel si vous ne le faites pas déjà.
Cela peut être utile de publier le message d'erreur. Il n'y a pas assez pour continuer à partir de votre question pour vous aider sans un peu plus d'informations.
Faites un
dd ($ credentials)
et vérifiez s'il contient ce que vous attendez.Comment enregistrez-vous les informations d'identification des utilisateurs?
"Données non valides" suggère que la validation échoue. Faites-vous une validation ailleurs et pouvez-vous poster un exemple de la charge utile que vous envoyez au contrôleur?