2017-06-20 1 views
1

Je suis actuellement en train de créer une application (en utilisant Laravel) qui fonctionne avec une application plus grande (Zend 1.x). J'utilise le passeport Laravel pour l'authentification API. J'ai besoin de changer le mécanisme de hachage par défaut de Laravel Passport pour le hachage Zend afin que l'authentification fonctionne. Est-ce que quelqu'un peut me diriger vers une API ou quelque chose que j'ai besoin de surcharger pour que cela fonctionne? Je préfère ne pas modifier le code Laravel Passport.Mécanisme de hachage personnalisé Laravel Passport

J'ai vu des suggestions de création d'un fournisseur d'utilisateur personnalisé et de modification de la méthode validateCredentials(), mais toutes sont destinées au noyau Laravel.

J'utilise déjà la méthode findForPassport dans la classe User pour remplacer le champ du nom d'utilisateur.

public function findForPassport($username) 
{ 
    return $this->where('email', $username)->first(); 
} 

Répondre

1

Pour ceux qui se demandent, vous pouvez remplacer 2 méthodes (peut-être plus) dans la classe utilisateur pour gérer la personnalisation de l'authentification Laravel Passport:

/** 
* Override the field which is used for username in the authentication 
*/ 
public function findForPassport($username) 
{ 
    return $this->where('email', $username)->first(); 
} 

/** 
* Add a password validation callback 
* 
* @param type $password 
* @return boolean Whether the password is valid 
*/ 
public function validateForPassportPasswordGrant($password) 
{ 
    $hasher = new HSAUserHasher(); // Or whomever does your hashing 

    $result = $hasher->create_hash($password, $this->salt); 
    $hashedPassword = $result['password']; 

    return $hashedPassword == $this->password; 
} 

Merci à @redviking sur les forums de mou Laravel (https://larachat.slack.com) pour m'aider vers la réponse.