Laravel自定义身份验证:未定义路由[登录]

时间:2019-07-10 08:27:18

标签: php laravel authentication

在该教程之后,我为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');
    }
}

我想念一些东西,但是呢?

非常感谢您的帮助和时间...

2 个答案:

答案 0 :(得分:0)

找到了!感谢Alpha的帮助,我找到了问题!

问题是我正在使用的中间件(Authenticate.php)重定向到了route('login'),而不是我需要的自定义路由。

答案 1 :(得分:0)

您正在复制登录名称路由。将登录名更改为可以正确定义您的路由行为的任何特定名称。