Я создал пользовательскую аутентификацию для своего приложения Laravel, следуя этому руководству: https://medium.com/@nasrulhazim/laravel-using-different-table-and-guard-for-login-bc426d067901
Я адаптировал его под свои нужды, но особо менять не пришлось.
В конце концов, когда я пытаюсь перейти по маршруту / home, но он говорит: «Маршрут [логин] не определен».
Я предполагаю, что поведение аутентификации по умолчанию вызывает маршрут входа в систему вместо созданного мной / fidelite / login.
Вот мой провайдер:
fidelite’ => [ ‘driver’ => ‘eloquent’, ‘model’ => AppFidelite::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(‘AuthLogin’) ->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
Вероятно, это связано с тем, что на вашей домашней странице есть шаблон, в котором вы использовали 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 AppHttpControllersAuthLoginController as DefaultLoginController; Я расширяю — person Laurent Kreps schedule 10.07.2019
Источник: