在该教程之后,我为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\FideliteHomeController@index')->name('home');
Route::namespace('Auth\Login')
->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');
}
}
我想念一些东西,但是呢?
非常感谢您的帮助和时间...
答案 0 :(得分:0)
找到了!感谢Alpha的帮助,我找到了问题!
问题是我正在使用的中间件(Authenticate.php)重定向到了route('login'),而不是我需要的自定义路由。
答案 1 :(得分:0)
您正在复制登录名称路由。将登录名更改为可以正确定义您的路由行为的任何特定名称。