2013-08-20 4 views
0

Je crée une API pour une base de données existante. J'ai d'abord remarqué le problème quand j'ai vu que Auth :: try renvoyait toujours false. Depuis que j'ai mis en place mon propre fournisseur de hachage SHA1, j'ai pensé que cela pourrait être le problème.Pourquoi Laravel Auth :: check retourne toujours false?

Mais j'ai essayé Hash :: make ('test') et il m'a donné 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'. Puis j'ai essayé Hash :: make ($ client-> pwd) et ça m'a donné le même hash. Corrigez jusqu'à présent. Enfin, j'ai fait

if (Hash::check('test', $cli->pwd)) 
{ 
    [...] 
} 

et il est retourné faux. D'après les apparences, le problème n'est pas mon fournisseur de hachage et je suppose que c'est aussi la raison pour laquelle la tentative Auth :: échoue. Quelqu'un peut-il me dire pourquoi?

+4

Auth :: attempt() va hacher le mot de passe lui-même, il est donc probable qu'il refasse votre mot de passe "hashed" – Laurence

+0

Avez-vous intégré votre fournisseur de hachage personnalisé dans Auth? Parce que ce hachage ne ressemble pas à un hachage BCrypt. –

+0

Oups, erreur de ma part. Je l'ai changé en if (Hash :: check ('test', $ cli-> pwd)). Toujours en revenant faux. Et oui je pense que j'ai bien compris l'intégration, c'est SHA1 car mes mots de passe de base de données ne sont pas des hachages bcrypt. –

Répondre

0

Le problème était de ma part. J'ai mal compris le concept d'Eloquent. J'ai dû changer dans ma classe UserInterface, celle à laquelle mon modèle d'utilisateur a été mappé, getAuthIdentifier() pour retourner "id" qui est la PrimaryKey de ma table. Je pensais que le getAuthIdentifier() était le "nom d'utilisateur" de la table.

Questions connexes