Laravel 5

These credentials do not match our records.

Avatar de Hugo
Hugo

Bonjour,

Je fais une authentification différente de celle de base. Pour se connecter j'utilise un champ "fr" et un champ"mdp". J'obtiens cette erreur lors de l'authentification : "These credentials do not match our records."

Ca fait deja trop longtemps que je suis sur cette erreur et malgré les anciens posts je ne comprendspas mon erreur.

Voici mon Projet :

-Mes routes :

Auth::routes();

Route::get('/', function () {
    return view('template');
});

-Mon Formulaire :

<form method="POST" action"{{route('login')}}" class="user">
                      @csrf
                      <div class="form-group">
                        <input type="text" class="form-control form-control-user {{ $errors->has('username') ? ' is-invalid' : '' }}" id="fr" name="fr" placeholder="Entrer votre FR :">
                        @if ($errors->has('username'))
                          <span class="invalid-feedback" role="alert">
                            <strong>{{ $errors->first('username') }}</strong>
                          </span>
                        @endif
                      </div>
                      <div class="form-group">
                        <input type="password" class="form-control form-control-user {{ $errors->has('mdp') ? ' is-invalid' : '' }}" id="mdp" name="mdp" placeholder="Entrer votre mot de passe :">
                        @if ($errors->has('mdp'))
                          <span class="invalid-feedback" role="alert">
                            <strong>{{ $errors->first('mdp') }}</strong>
                          </span>
                        @endif
                      </div>
                    <div class="form-group">
                    <button type="submit" class="btn btn-warning btn-lg" value="Login">Se connecter</button>
                    </div>
                  </form>

-LoginController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/';

    protected $username = 'fr';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}

-AuthenticatesUsers.php

<?php

namespace Illuminate\Foundation\Auth;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\ValidationException;

trait AuthenticatesUsers
{
    use RedirectsUsers, ThrottlesLogins;

    /**
     * Show the application's login form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showLoginForm()
    {
        return view('auth.login');
    }

    /**
     * Handle a login request to the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Http\JsonResponse
     *
     * @throws \Illuminate\Validation\ValidationException
     */
    public function login(Request $request)
    {
        $this->validateLogin($request);

        // If the class is using the ThrottlesLogins trait, we can automatically throttle
        // the login attempts for this application. We'll key this by the username and
        // the IP address of the client making these requests into this application.
        if ($this->hasTooManyLoginAttempts($request)) {
            $this->fireLockoutEvent($request);

            return $this->sendLockoutResponse($request);
        }

        if ($this->attemptLogin($request)) {
            return $this->sendLoginResponse($request);
        }

        // If the login attempt was unsuccessful we will increment the number of attempts
        // to login and redirect the user back to the login form. Of course, when this
        // user surpasses their maximum number of attempts they will get locked out.
        $this->incrementLoginAttempts($request);

        return $this->sendFailedLoginResponse($request);
    }

    /**
     * Validate the user login request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return void
     *
     * @throws \Illuminate\Validation\ValidationException
     */
    protected function validateLogin(Request $request)
    {
        $request->validate([
            $this->username() => 'required|string',
            'mdp' => 'required|string',
        ]);
    }

    /**
     * Attempt to log the user into the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return bool
     */
    protected function attemptLogin(Request $request)
    {
        return $this->guard()->attempt(
            $this->credentials($request), $request->filled('remember')
        );
    }

    /**
     * Get the needed authorization credentials from the request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    protected function credentials(Request $request)
    {
        return $request->only($this->username(), 'mdp');
    }

    /**
     * Send the response after the user was authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    protected function sendLoginResponse(Request $request)
    {
        $request->session()->regenerate();

        $this->clearLoginAttempts($request);

        return $this->authenticated($request, $this->guard()->user())
                ?: redirect()->intended($this->redirectPath());
    }

    /**
     * The user has been authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  mixed  $user
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        //
    }

    /**
     * Get the failed login response instance.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Symfony\Component\HttpFoundation\Response
     *
     * @throws \Illuminate\Validation\ValidationException
     */
    protected function sendFailedLoginResponse(Request $request)
    {
        throw ValidationException::withMessages([
            $this->username() => [trans('auth.failed')],
        ]);
    }

    /**
     * Get the login username to be used by the controller.
     *
     * @return string
     */
    public function username()
    {
        return 'fr';
    }

    /**
     * Log the user out of the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function logout(Request $request)
    {
        $this->guard()->logout();

        $request->session()->invalidate();

        return $this->loggedOut($request) ?: redirect('/');
    }

    /**
     * The user has logged out of the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    protected function loggedOut(Request $request)
    {
        //
    }

    /**
     * Get the guard to be used during authentication.
     *
     * @return \Illuminate\Contracts\Auth\StatefulGuard
     */
    protected function guard()
    {
        return Auth::guard();
    }
}

Merci de votre futur aide

Posté il y a 3 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Cette erreur signifie simplement que le couple fr/mdp n'existe pas dans la base... Je ne suis pas certain que créer un nouveau post va faire avancer le truc. Par contre ton premier post parlait de Laravel7 et là tu poste dans Laravel5.

Moi je ferais: - Soit tester le couple email/mdp comme je t'ai dit dans l'autre post - Soit remettre la route register pour créer un user, et le tester direct pour voir (comme ça t'es certain que le user existe)

Posté il y a 3 mois
Avatar de Hugo
Hugo

J'ai recréer un projet de 0 en version 5.7 afin de résoudre mon problème.

J'ai bien mon champ "fr" et "mdp" en base, pour ce qui est de l'User je suis certain qu'il existe, je l'ai créé via Tinker.

On parle de surcharger mon LoginController si j'utilise d'autre champs, faut il faire quelque chose ?

Posté il y a 3 mois
Avatar de CinquièmeDimension
CinquièmeDimension

As-tu utilisé la commmande php artisan make:auth pour créer ta connexion ? Pour moi c'est vraiment le top cette commande, je suis tout tristesse qu'elle ait disparue.

L'utilité de tester avec le couple email/mdp (et le register depuis la route du même nom) est d'écarter toute possibilité d'erreur de ce côté. En l'état, ça peut être une erreur d'encodage du mdp via tinker, un problème dans ta surcharge, un problème plus général d'autentification, ou carrement autre chose.

Comme ça tu fais les tests suivants:

  • /register + email/mdp (pour écarter un pb d'authentification général)
  • /register + fr/mdp (pour écarter un pb dans ta surcharge)
  • tinker + email/mdp (pour écarter un problème lié a Tinker)
Posté il y a 3 mois
Avatar de Hugo
Hugo

Oui j'ai bien utilisé cette commande, sur les dernieres versions elle a été remplacé par : "php artisan ui vue --auth ".

Concernant /register + email/mdp il n'y a pas de problème mais des que je change ma table "Users" je me retrouve embeter...

Mon objectif était de remplacer le "username" de Laravel par mon "fr".

Posté il y a 3 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Je viens de m'installer un LV5.7 et l'ai modifié et je me connecte bien avec fr/password (j'ai pas modifié password en mdp):

  • un petit coup de php artisan make:auth
  • ajout de $table->string('fr')->unique(); dans la migration du user
  • ajout du champs 'fr' dans user.php, dans RegisterController.php, dans la vue register
  • remplacement du champ email par ton champ fr dans la vue login
  • ajout de protected $username = 'fr'; et de la fonction public function username(){return 'fr';} dans LoginController.php
  • et c'est tout...

Du coup ton problème viens peut-être non pas du champs fr mais du champ mdp vu que d'origine c'est password et non mdp. Si tu ne modifie pas le champs password, t'as beaucoup moins de surcharges à faire.

Posté il y a 3 mois
Avatar de Hugo
Hugo

Un gros merci pour ton aide, j'ai enlevé ma surcharge sur le champ "password" et tout est résolu. Je ne suis pas sur mais je pense que j'avais aussi un problème dans mon formulaire.

Encore merci j'ai mon authentification et j'ai pu encore bien avancer dans mon projet !

Posté il y a 3 mois

Vous ne pouvez pas répondre à ce sujet.