Вопросы

Пользовательская аутентификация 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

Читать:
Symfony 4 - Ошибка открытия требуется getSwiftmailer_EmailSender_ListenerService

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

Вероятно, это связано с тем, что на вашей домашней странице есть шаблон, в котором вы использовали 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

Похожие записи

Транснациональная электронная почта с SendGrid и Firebase Без ошибок, но без электронных писем (в качестве ответа использовался NodeMailer)

admin

Как добавить NODE в конец двойного связанного списка?

admin

Как извлечь количество наблюдений за каждый год

admin

Как использовать команды tfs в сценарии nant?

admin

Кто решает, что входит в установку gem ‹gem_name›, и как вы решаете, какой форк использовать?

admin

Как хранить журналы транзакций в блокчейне?

admin