2017-08-12 1 views
0

J'utilise Lumen/Laravel Eloquent.Eloquent - combinaison User :: où avec Hash :: check

J'ai la table utilisateurs avec colonne jeton qui représente une valeur symbolique créée avec Hash hachée :: make (fullToken $).

Maintenant, je veux comparer la valeur du jeton complet que les utilisateurs envoient au serveur avec la valeur hachée enregistrée dans la base de données.

Je ne suis pas en mesure de le faire de cette façon:

$hashedToken = Hash::make($userSentToken); 

parce que chaque valeur hachée a sel partie et je dois utiliser hash Eloquent :: check (« texte brut », hashedValue $) fonction.

Comment puis-je combiner cette méthode check() avec User :: where()? Je veux un moyen unique de convertir ce jeton complet en valeur hachée et de sélectionner la colonne jeton de la base de données par cette valeur hachée.

Répondre

0

Pourquoi ne pas Hash

Hash::make retours différentes sorties chaque appel, mais vous avez besoin d'une fonction déterministe. Hash::make n'est pas une simple fonction déterministe comme md5 qui renvoie une sortie constante à chaque entrée donnée. Donc, vous ne pouvez pas interroger hash lorsque vous utilisez Hash façade comme vous l'avez décrit.

Si vous devez interroger une valeur hachée via une base de données, essayez d'utiliser smth comme une fonction md5 au lieu de Hash::make.

Quelques variantes pour stocker

  • md5($userSentToken)
  • md5($userSentToken . $salt)
  • md5(md5($userSentToken))