Laravel: Comment puis-je changer la valeur par défaut d'Authentification de Mot de passe nom de champ
Je suis actuellement en train de travailler sur mon premier laravel projet et je suis confronté à un problème.
Si vous avez de l'expérience avec laravel vous savez probablement que, en appelant php artisan make:auth
vous obtiendrez un prédéfini mécanisme qui gère la connexion et inscription.
Ce mécanisme est à comprendre un couple de mots couramment utilisés dans le but d'automatiser l'ensemble de la procédure.
Le problème qui se produit dans mon cas, c'est que je suis en utilisant oracle db et il ne me permet pas d'avoir une colonne de table avec le nom de password
parce que c'est un système de mot-clé et il jette des erreurs lorsque vous essayez d'insérer un utilisateur.
Jusqu'à présent, j'ai essayé de changer mon password
colonne de passwd
et il a travaillé dans mon formulaire d'inscription comme prévu. La ligne d'Utilisateur a été correctement inséré et ma page a été redirigé vers /home.
Mais lorsque j'essaie de vous déconnecter puis se reconnecter, j'ai cette erreur me disant que mes informations ne sont pas correctes.
Comme pour mon code, j'ai changé mon RegisterController.php
de sorte qu'il prend le nom d'utilisateur au lieu de l'e-mail
protected function validator(array $data)
{
return Validator::make($data, [
'username' => 'required|max:50|unique:ECON_USERS',
'passwd' => 'required|min:6|confirmed',
]);
}
protected function create(array $data)
{
return User::create([
'username' => $data['username'],
'passwd' => bcrypt($data['passwd'])
]);
}
L'Utilisateur $à remplir
protected $fillable = [
'username', 'passwd'
];
Je devine que Auth essaie de s'authentifier avec email
et pas username
ou que Auth est à la recherche de password
et pas passwd
- Ces questions m'empêcher de proposer Laravel 5.4 pour le nouveau projet. Je suis aux prises avec le même problème. Bien que dans mon cas, j'ai changé le nom de la table et le mot de passe nom de champ et d'avoir à ajouter des tas d'autres champ dans la table user. Ne sais pas comment pour obtenir le logincontroller de travailler à nouveau à l'aide de la eloquant modèle pour l'Utilisateur et le pilote.
- J'ai le même problème, Comment pourrais-je le résoudre?
Vous devez vous connecter pour publier un commentaire.
Pour avoir
username
au lieu deemail
, vous pouvez remplacer nom d'utilisateur() dans votre LoginController.phpEt pour
passwd
au lieu depassword
, vous pouvez définir un accesseur dans votre App\User.phplogin.blade.php : Remplacer
email
entrée avecusername
mais ne pas changer le nom de l'input pourpassword
.getAuthPassword()
travaillé! Thx 😀public function getPasswordAttribute
etreturn $this->myCustomPasswordName
.Dans le
app/Http/Controllers/Auth/LoginController
remplacer la valeur par défaut de la classe en ajoutant:N'oubliez pas d'ajouter
use Illuminate\Http\Request;
Il pourrait être que vous devez ajouter ce trop pour votre
LoginController
.Cela devrait le faire.
De l'utiliser. C'est un travail pour moi.
Jusqu'à présent, j'ai changé le User.php
et
Aussi sur LoginController.php
Dans Laravel de 5,7 à côté de la réponse ci-dessus, vous devez changer EloquentUserProvider classe. recherche dans le fichier de mot de passe mot dans les lignes (107,117, et 140) vous avez trouvé "mot de passe" le mot et le changer avec un nouveau nom, et c'est tout solustion.
validateCredentials
etretrieveByCredentials
modification de la fonction "mot de passe" mot avec le nouveau nom.Modifier :je change
EloquentUserProvider
classe mais si vous pensez à changer de laravel classe est une mauvaise pratique, vous pouvez créer un fournisseur personnalisé et redéfinir lesretrieveByCredentials
etvalidateCredentials
fonctions dans le fournisseur personnalisé.EloquentUserProvider
directement est très mauvaise pratique. Ne pas le faire. Au lieu de créer une nouvelle classe qui étend l'utilisateur, fournisseur de remplacer les méthodes que vous devez ensuite vous inscrire à la nouvelle classe de remplacerEloquentUserProvider
Dans votre AuthController.php (Situé dans app/http/Controllers/Auth)