8
votes

Authentification Manuelle Laravel: Auth :: Tentative Toujours faux

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 auth :: tentative est toujours faux. xxx

authentifier fonction: xxx

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 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? xxx


4 commentaires

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?


9 Réponses :


0
votes

Tout semble être correct.

Quels sont les noms de colonne dans la table des utilisateurs?

Les noms sont sensibles à la casse. Alors assurez-vous qu'ils sont en effet nom et mot de passe et non nom et mot de passe . .


1 commentaires

Dans Fonction publique authentifier (demande $ Demande) Essayez de changer $ mot de passe = $ entrée ["mot de passe"]; € mot de passe = bcrypt ($ entrée [' ']);



4
votes

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!');
     }
 }


4 commentaires

J'ai constaté que la auth :: tentative 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']); 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?



0
votes

Pourquoi n'utilisez-vous pas la commande php artisan marque: auth ? Cela fera tout ce dont vous avez besoin.


0 commentaires

0
votes
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)

2 commentaires

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.



6
votes

Il y a un problème avec les noms. auth @ tentative prend toutes ces informations d'identification, sauf mot de passe (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 Critique Vous avez passé et le mot de passe hachée du modèle qu'il gagne à partir de $ Modèle-> getAuthPassword () .

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 utilisateur et doit être nommé mot de passe 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.

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) xxx

Lorsque vous passez les informations d'identification, vous passez le mot de passe texte clair car il y aura un hash_check . Comparaison.

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.


0 commentaires

0
votes

Si vous souhaitez utiliser nom comme nom d'utilisateur et mot de passe uniques que le mot de passe

Vous pouvez faire ce moyen ..

dans votre AUTHCONTROLLER Ajoutez cette méthode xxx

et dans votre modèle d'utilisateur ajoutez cette méthode xxx

espoir que cela fonctionnera.


1 commentaires

Ils n'utilisent pas l'autorocleur par défaut.



1
votes

Comme vous utilisez un nom au lieu de courrier électronique (par défaut) comme nom d'utilisateur pour vous authentifier. Vous devriez ajouter $ Nom d'utilisateur code> à l'intérieur de votre authcontroller code>. xxx pré>

Alternativement, vous pouvez remplacer 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;
    }
}


1 commentaires

Ils n'utilisent pas l'AuthController et s'ils sont contournés tout cela car la méthode dans leur code est écrite à la main.



0
votes

Essayez de passer aux index minuscules de cette ligne: xxx

à xxx


0 commentaires

2
votes

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.


0 commentaires