J'utilise le système d'authentification manuelle de Laravel.Submitting Le formulaire redirige vers cet itinéraire présenté ci-dessous. Et dans la fonction authentifier () Le nom et le mot de passe ne correspondent jamais à ce que j'ai stocké plus tôt. IE authentifier fonction: p> J'ai enregistré le Utilisateur de cette façon. Le mot de passe est haché à l'aide de BCRYPT (). fonction. Mais dans l'authentification () fonction, je comparais avec un mot de passe simple. Je lue quelque part auth :: tentative code> est toujours faux.
auth code> les gère automatiquement. Ou y a-t-il quelque chose que je devrais changer dans config / auth.php car j'ai utilisé le nom pour authentifier au lieu de nom d'utilisateur? p>
9 Réponses :
Tout semble être correct. P>
Quels sont les noms de colonne dans la table des utilisateurs? P>
Les noms sont sensibles à la casse. Alors assurez-vous qu'ils sont en effet nom code> et
mot de passe code> et non
nom code> et
mot de passe code>. P>.
Dans Fonction publique authentifier (demande $ Demande) code> Essayez de changer
$ mot de passe = $ entrée ["mot de passe"]; code> € mot de passe = bcrypt ($ entrée [' ']); code>
Vérifiez le code ci-dessous
public function authenticate(Request $request) { $password = $request->input('password'); $name = $request->input('name'); if (Auth::attempt(['name' => $name, 'password' => $password]) ) { return redirect()->intended('/home'); } else { return view('login')->withErrors('Error logging in!'); } }
J'ai constaté que la auth :: tentative code> est false à cause d'un mot de passe incorrect. J'ai utilisé BCRYPT () tout en enregistrant des utilisateurs.
$ mot de passe = BCRYPT ($ entrée ['Mot de passe']); Code> Comment puis-je l'utiliser ici pour accéder?
$ mot de passe = entrée :: obtenir (mot de passe '); $ hashed = hachage :: faire ($ mot de passe);
Pouvez-vous écrire le code ici? je ne sais pas que faites-vous
Où est le code? Téléchargez-vous la lame et le fichier de contrôleur? Vous avez dit: "J'ai utilisé le nom pour authentifier au lieu de nom d'utilisateur" -> Pouvez-vous télécharger le projet ou les configurations et fichiers nécessaires? Où vous sauvegardez une copie du vendeur / Laravel / Framework / SRC / Illuminate / Fondation / Auth / Auth EntiticatSandregister Susers.php Fichier?
Pourquoi n'utilisez-vous pas la commande php artisan marque: auth code>? Cela fera tout ce dont vous avez besoin. P>
Route::group(['middleware' => ['web']], function () { Route::post('/logintest', 'mycontroller@authenticate'); }); please check with the above change in your Routes.php, provided you are using version 5 or 5.2 Make sure your users table field names are "Name" and "Password" else update it. Check the field length of your Password field (in your database, users table). It should hold a lengthy, hashed password something like this $2y$10$eM.kmjTwEIykhNUqMsNzMud0E6eO6RUYAzTqirrbozY1zdhVwQmsC atleast, (varchar(60)) It would be better if you could show us the users table schema Finally, make sure you are entering the correct password (as I can't see much mistakes in your code)
Pouvez-vous s'il vous plaît montrer la structure de la table pour la table des "utilisateurs"?
Oui. J'ai changé «mot de passe» sur «mot de passe» et j'ai soudainement travaillé. Merci pour vos efforts.
Il y a un problème avec les noms. Ce champ dans les informations d'identification est spécial, car il s'agit de ce que l'authentification a besoin de savoir quel champ dans les informations d'identification est censé être le mot de passe. Il ne correspond pas directement au champ que vous avez utilisé sur votre table code> utilisateur code> et doit être nommé Vous devez déclarer dans votre utilisateur. Modèle Si vous utilisez un champ autre que «mot de passe» sur la table comme mot de passe. Dans votre cas, vous utilisez «mot de passe». (C'est tout la casse sensible à la casse) p> Lorsque vous passez les informations d'identification, vous passez le mot de passe texte clair car il y aura un Vous pouvez nommer les champs Qu'est-ce que vous voulez sur votre table réelle, il vous suffit de faire une éloquence au courant de cela. P> p> auth @ tentative code> prend toutes ces informations d'identification, sauf
mot de passe code> (sensible à la casse), que vous passez dans ce tableau et exécute une requête (c'est ainsi que vous pouvez ajouter des contraintes supplémentaires à la tentative, comme ils sont juste là où les conditions). S'il trouve un modèle, il effectuera une vérification de hachage sur le mot de passe Code> Critique Code> Vous avez passé et le mot de passe hachée du modèle qu'il gagne à partir de
$ Modèle-> getAuthPassword () Code>.
mot de passe code> dans la matrice de références. Les autres champs des informations d'identification que vous passez, en plus de «mot de passe», se corrélent directement dans les champs de la table des utilisateurs, car ils sont des conditions d'une requête de base de données sur cette table. P>
hash_check code>. Comparaison. P>
Si vous souhaitez utiliser code> nom code> comme nom d'utilisateur et mot de passe uniques que le mot de passe Vous pouvez faire ce moyen .. p> dans votre AUTHCONTROLLER Ajoutez cette méthode p> et dans votre modèle d'utilisateur ajoutez cette méthode p> espoir que cela fonctionnera. P > p> code>
Ils n'utilisent pas l'autorocleur par défaut.
Comme vous utilisez un nom au lieu de courrier électronique (par défaut) comme nom d'utilisateur pour vous authentifier. Vous devriez ajouter Alternativement, vous pouvez remplacer $ Nom d'utilisateur code> à l'intérieur de votre
authcontroller code>.
loginusername () code> Méthode à partir de
Illuminate \ Foundation \ Auth \ authentificatesutilisateurs Code> Trait. P>
....
class User extends Authenticatable
{
....
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->Password;
}
}
Ils n'utilisent pas l'AuthController et s'ils sont contournés tout cela car la méthode code> code> dans leur code est écrite à la main.
Essayez de passer aux index minuscules de cette ligne: à p>
Vous devez écrire le personnage P de mot de passe dans une petite lettre.
Remplacer, P>
Auth::attempt(['Name' => $name, 'password' => $password]) // 'p' is in small letter here.
Pouvez-vous s'il vous plaît nous montrer le fichier de routes?
@ViPindasks Je les ai montrées en haut.
Est-ce que les seuls itinéraires définis sont définis. Je veux juste m'assurer qu'il ne conflit pas d'autres itinéraires. Surtout, si vous aviez fait un artisan PHP: authère plus tôt.
Pouvons-nous vous voir un fichier de migration pour la table des utilisateurs?