Пользовательская аутентификация Laravel: маршрут [логин] не определен

Я создал пользовательскую аутентификацию для своего приложения Laravel, следуя этому руководству: https://medium.com/@nasrulhazim/laravel-using-different-table-and-guard-for-login-bc426d067901

Я адаптировал его под свои нужды, но особо менять не пришлось.

В конце концов, когда я пытаюсь перейти по маршруту / home, но он говорит: «Маршрут [логин] не определен».

Я предполагаю, что поведение аутентификации по умолчанию вызывает маршрут входа в систему вместо созданного мной / fidelite / login.

Вот мой провайдер:

fidelite' => [
            'driver' => 'eloquent',
            'model' => App\Fidelite::class,
        ],

И охранник

'fidelite' => [
            'redirectTo' => 'fidelite.home',
            'driver' => 'session',
            'provider' => 'fidelite',
        ],

Маршруты, определенные в файле web.php

Route::prefix('fidelite')
    ->as('fidelite.')
    ->group(function() {
        Route::get('/home', 'Home\[email protected]')->name('home');
Route::namespace('Auth\Login')
      ->group(function() {
    Route::get('login', '[email protected]')->name('login');
    Route::post('login', '[email protected]')->name('login');
    Route::post('logout', '[email protected]')->name('logout');
    Route::get('register', '[email protected]')->name('register');
      });
 });

По сути, есть два контроллера; первый, FideliteController добавляет промежуточное ПО и показывает необходимые формы для входа / регистрации

class FideliteController extends DefaultLoginController
{
    protected $redirectTo = '/fidelite/home';
    public function __construct()
    {
        $this->middleware('guest:fidelite')->except('logout');
    }
    public function showLoginForm()
    {
        return view('auth.login.fidelite');
    }
    public function showRegisterForm()
    {
        return view('auth.compte');
    }
    public function username()
    {
        return 'email';
    }
    protected function guard()
    {
        return Auth::guard('fidelite');
    }
}

А другой возвращает домашнюю страницу / fidelite /, когда пользователь вошел в систему.

class FideliteHomeController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:fidelite');
    }
    public function index()
    {
        return view('home.fidelite');
    }
}

Что-то мне не хватает, но что?

Большое спасибо за вашу помощь и время …

На самом деле ваш login маршрут имеет имя fidelite.login из-за группы as и имеет повторяющиеся имена fidelite.login.   —  person Laurent Kreps    schedule 10.07.2019

это верно, и если я перейду в / fidelite / login, он работает. Но когда я вызываю маршрут / home / fidelite, у меня возникает исключение InvalidArgumentException — маршрут [логин] не определен. Я думаю, это как-то вызывает маршрут / login   —  person Laurent Kreps    schedule 10.07.2019

См. также:  Модульное тестирование PHP с использованием Zend Auth и Zend ACL

Вероятно, это связано с тем, что на вашей домашней странице есть шаблон, в котором вы использовали route('login') для создания ссылки для входа.   —  person Laurent Kreps    schedule 10.07.2019

Также проверьте промежуточное ПО, на которое ссылается / используется в FideliteHomeController ::constructor $this->middleware('auth:fidelite');, оно могло использовать любое перенаправление входа в систему.   —  person Laurent Kreps    schedule 10.07.2019

Я не думаю, что это проблема, с которой я столкнулся, потому что, когда я редактирую свой FideliteHomeController и заменяю return view('home.fidelite'); в индексной функции на return 'hello';, возникает та же ошибка   —  person Laurent Kreps    schedule 10.07.2019

Затем это файл просмотра, в котором создается маршрут login, очистите cache для просмотров.   —  person Laurent Kreps    schedule 10.07.2019

Файл входа в систему содержит только {{ route('fidelite.login') }}, но, возможно, я что-то пропустил в промежуточном программном обеспечении; На самом деле я не создавал промежуточное ПО (я следовал упомянутому руководству), я думаю, это промежуточное ПО loginController use App\Http\Controllers\Auth\LoginController as DefaultLoginController; Я расширяю   —  person Laurent Kreps    schedule 10.07.2019

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Laurent Kreps

    Нашел! Спасибо Альфе, которая помогает мне найти проблему!

    Проблема заключалась в том, что промежуточное ПО, которое я использовал (Authenticate.php), перенаправляло на маршрут («логин») вместо нужного мне настраиваемого маршрута.

  2. Laurent Kreps

    Вы дублируете маршрут имени входа. измените имя входа на любое конкретное имя, которое должным образом определяет поведение вашего маршрута.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: