我按照教程为我的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', 'HomeFideliteHomeController@index')->name('home');
Route::namespace('AuthLogin')
->group(function() {
Route::get('login', 'FideliteController@showLoginForm')->name('login');
Route::post('login', 'FideliteController@login')->name('login');
Route::post('logout', 'FideliteController@logout')->name('logout');
Route::get('register', 'FideliteController@showRegisterForm')->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/home 页面
class FideliteHomeController extends Controller
{
public function __construct()
{
$this->middleware('auth:fidelite');
}
public function index()
{
return view('home.fidelite');
}
}
我错过了一些东西,但是什么?
非常感谢您的帮助和时间...
找到了!感谢阿尔法帮助我找到问题!
问题是我使用的中间件(Authenticate.php(重定向到路由("登录"(而不是我需要的自定义路由。
您正在复制登录名路由。 将登录名更改为正确定义路由行为的任何特定名称。