Comment obtenir une connexion avec une base de données différente de la table nom de la colonne dans Laravel 5.2?
- Je mettre en place la fonctionnalité de login dans Laravel 5.2. J'ai réussi à le faire à l'aide de l'officiel Laravel la documentation, sauf que je ne sais pas comment authentifier l'utilisateur à l'aide de différentes base de données de noms de colonne de table, à savoir st_username
et st_password
.
J'ai cherché sur Internet pour trouver des indices, mais en vain.
Je ne sais pas quelle classe j'ai besoin d'utiliser (comme l'utilisation d'Éclairer.......) pour Auth. Si quelqu'un connaît la réponse, s'il vous plaît laissez-moi savoir.
Voici mon code:
De Vue Login
@extends('layouts.app')
@section('content')
<div class="contact-bg2">
<div class="container">
<div class="booking">
<h3>Login</h3>
<div class="col-md-4 booking-form" style="margin: 0 33%;">
<form method="post" action="{{ url('/login') }}">
{!! csrf_field() !!}
<h5>USERNAME</h5>
<input type="text" name="username" value="abcuser">
<h5>PASSWORD</h5>
<input type="password" name="password" value="abcpass">
<input type="submit" value="Login">
<input type="reset" value="Reset">
</form>
</div>
</div>
</div>
</div>
<div></div>
@endsection
L'action authcontroller
namespace App\Http\Controllers\Auth;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
$this->username = 'st_username';
$this->password = 'st_password';
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:6',
]);
}
Fichier De Route
Route::get('/', function () {
return view('index');
});
Route::group(['middleware' => 'web'], function () {
Route::auth();
Route::get('/home', 'HomeController@index');
});
config/auth.php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
'passwords' => [
'users' => [
'provider' => 'users',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
],
];
Vous devez vous connecter pour publier un commentaire.
J'ai beaucoup cherché comment personnaliser Laravel 5.2 formulaire d'autorisation et c'est ce qui est travail à 100% pour moi.
Voici, du bas vers le haut de la solution.
Cette solution est à l'origine à partir d'ici: https://laracasts.com/discuss/channels/laravel/replacing-the-laravel-authentication-with-a-custom-authentication
mais j'ai dû faire quelques modifications pour le faire fonctionner.
Mon web app est pour les DJs donc à mon habitude des noms de colonne avec " dj_, par exemple le nom est dj_name
config/auth.php
dans config/app.php ajouter votre fournisseur personnalisé à la liste
...
Créer CustomAuthProvider.php à l'intérieur de dossier app\Fournisseurs
Créer CustomUserProvider.php aussi à l'intérieur du dossier app\Fournisseurs de
dans App/Http/Controllers/Auth/AuthController.php changement de tous les
'name' à 'dj_name" et ajoutez vos champs personnalisés si vous en avez...vous pouvez également modifier "e-mail" à votre e-mail nom de la colonne
Dans Illuminate\Foundation\Auth\User.php ajouter
Dans App/User.php changer le nom de' à 'dj_name" et ajoutez vos champs personnalisés.
Pour changer le mot de passe' colonne personnalisé de votre nom de colonne ajouter
Maintenant backend est fait, vous n'avez qu'à modifier l'agencement login.blade.php, register.blade.php, app.de la lame.php...ici, vous n'avez qu'à changer le nom de' à 'dj_name', e-mail, ou vos champs personnalisés...
!!! champ mot de passe doit rester nommé mot de passe !!!
Aussi, de la rendre unique l'email de validation de changement AuthController.php
Aussi, si vous voulez faire de la coutume created_at un updated_at champs de changement de variables globales dans Illuminate\Database\Eloquent\Model.php
C'est facile de simplement utiliser la colonne désirée noms dans Auth::tentative()/méthode comme suit:
Mise à jour:
Si vous aussi vous souhaitez changer d'authentification par défaut de la table qui est
users
par défaut ou modifier le nom du modèle ou le chemin d'accèsApp\User
par défaut, vous pouvez trouver ces paramètres dansconfig\auth.php
FatalErrorException in EloquentUserProvider.php line 126: Class '\App\User' not found
User.php
que c'est dansapp/Models/User.php
. Donc je l'ai changé pourapp/User.php
. Mais toujours problème se poseErrorException in EloquentUserProvider.php line 113: Undefined index: password
.config\auth.php
. sera mise à jour de ma réponseconfig\auth.php
? Je poste ce fichier'model' => App\User::class, to 'model' => App\Models\User::class,
Personnalisé Auth::tentative() ne fonctionne pas pour moi en changeant le modèle d'auth.php comme ceci:
Si j'essaie d'authentifier une Personne via personnalisé noms de colonne dans Auth::tentative:
Je reçois la même erreur:
Mais je peux authentifier une Personne comme ceci:
Mais ce n'est pas la façon dont il devrait être, je suppose.
Dans le Fichier mentionné (EloquentUserProvider.php), je vois un mot de passe est codé en dur.
Donc il n'y a effectivement aucun moyen d'utiliser un nom de colonne pour les mots de passe de la manière la plus facile?