Переопределение метода входа по умолчанию, показывающего, что эти учетные данные не соответствуют нашим записям Laravel 6 - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь переопределить laravel метод входа по умолчанию и пытаюсь использовать свои собственные логики c. В моем блейде входа в систему я использую поле ввода с именем «идентификаторы» вместо поля электронной почты. Когда я отправляю свою форму, я получаю These credentials do not match our records ошибку. Что я переопределяю:

логин.blade. php

<form class="form-horizontal" role="form" method="POST" action="{{ url('login') }}">
                    <input type="hidden" name="_token" value="{{ csrf_token() }}">
                    <div class="form-group">
                        <div class="col-md-12">
                            <div class="input-group input-group-sm">
                                <span class="input-group-addon" id="identifiers"><i class="fa fa-user"></i></span>
                                <input type="text" class="form-control" placeholder="Username or UserID or Email or Mobile No." aria-describedby="identifiers" name="identifiers" value="{{ old('identifiers') }}">
                            </div>
                            @if ($errors->has('identifiers'))
                                <span class="help-block">
                                    <strong class="text-danger">{{ $errors->first('identifiers') }}</strong>
                                </span>
                            @endif
                        </div>
                    </div>

                    <div class="form-group">
                        <div class="col-md-12">
                            <div class="input-group input-group-sm">
                                <span class="input-group-addon" id="password"><i class="fa fa-key"></i></span>
                                <input type="password" class="form-control" placeholder="Password" aria-describedby="password" name="password">
                            </div>
                            @if ($errors->has('password'))
                                <span class="help-block">
                                    <strong class="text-danger">{{ $errors->first('password') }}</strong>
                                </span>
                            @endif
                        </div>
                    </div>

                    <div class="form-group form-group-sm">
                        <div class="col-sm-12">
                        </div>
                    </div>

                    <div class="form-group">
                        <div class="col-md-12">
                            <button type="submit" class="btn btn-primary btn-sm  pull-right">
                                <i class="fa fa-sign-in" aria-hidden="true"></i>
                                Sign In
                            </button>
                        </div>
                    </div>
                </form>

для маршрутизации, я использую один

Auth::routes();

путь по умолчанию: app \ Http \ Controllers \ Auth \ LoginController. php

<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    use AuthenticatesUsers;
    protected $redirectTo = RouteServiceProvider::HOME;

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function showLoginForm()
    {
        $this->data['pageTitle'] = 'Sign In';

        return view('auth.login', array('data' => $this->data));
    }

    protected function validateLogin(Request $request)
    {
        $this->validate($request, [
            'identifiers' => 'required|string',
            'password' => 'required|string',
        ]);
    }

    protected function authenticated(Request $request)
    {
        pr($request->all());die;

    }
}

В соответствии с документацией мне необходимо переопределить метод authenticate в LoginController. Но запрос никогда не доходил до этого метода, даже если я переопределил его. Он перенаправляет меня на страницу входа со следующей ошибкой. Что я пропустил! может кто-нибудь сказать!

1 Ответ

0 голосов
/ 20 января 2020

Проблема в вашем коде заключается в том, что identifiers вместо электронной почты для получения вашего пользователя. По умолчанию Laravel ищет адрес электронной почты в вашей пользовательской таблице. См. do c

, вы должны добавить функцию в свой контроллер входа в систему

public function username()
{
    return 'identifiers';
}

ваш контроллер входа выглядит как

<?php

namespace App\Http\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    use AuthenticatesUsers;
    protected $redirectTo = RouteServiceProvider::HOME;

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function showLoginForm()
    {
        $this->data['pageTitle'] = 'Sign In';

        return view('auth.login', array('data' => $this->data));
    }

    protected function validateLogin(Request $request)
    {
        $this->validate($request, [
            'identifiers' => 'required|string',
            'password' => 'required|string',
        ]);
    }

    public function username()
    {
        return 'identifiers';
    }

    protected function authenticated(Request $request)
    {
        dd($request->all());
        return true; 

    }
}

его работает от меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...