認証が必要なミドルウェアページに移動しようとすると'Route [login] not defined'
、問題が発生します。ログインルートが「login」と呼ばれず、loginと呼ばれたくないのです。
これが私のルートです...
Route::group(['middleware' => 'auth', 'namespace' => 'User'], function() {
Route::get('/home', ['uses' => 'HomeController@getView', 'as' => 'frontend.user.home']);
});
Route::group(['middleware' => 'guest', 'namespace' => 'Guest'], function() {
Route::get('/login', ['uses' => 'LoginController@getView', 'as' => 'frontend.guest.login']);
Route::post('/login', ['uses' => 'LoginController@onPost', 'as' => 'frontend.guest.login']);
});
ルート「ログイン」の要求を停止し、カスタムルート「frontend.guest.login」の要求を開始するにはどうすればよいですか?
まず、次のルート名を修正する必要があります。
Route::get('/login', ['uses' => 'LoginController@getView', 'as' => 'frontend.guest.login']);
Route::post('/login', ['uses' => 'LoginController@onPost', 'as' => 'frontend.guest.login']);
frontend.guest.login
間違っている両方の(get / post)ルートに使用していることに注意してください。代わりに、たとえばfrontend.guest.get.login
forRoute::get()
とfrontend.guest.post.login
forのように一意の名前を使用する必要がありますRoute::post()
。
次に、App\Exceptions\Handler
クラスで、次のメソッドを作成/オーバーライドします。
protected function unauthenticated($request, AuthenticationException $exception)
{
return $request->expectsJson()
? response()->json(['message' => 'Unauthenticated.'], 401)
: redirect()->guest(route('frontend.guest.get.login'));
}
また、use Illuminate\Auth\AuthenticationException;
クラスの先頭にあるステートメントを使用して、クラスをにインポートAuthenticationException
しますApp\Exceptions\Handler
。
また、のすべてのユースケースfrontend.guest.login
を適切なルート名に変更し、frontend.guest.post.login
フォームの送信/アクションに使用し、フォームのfrontend.guest.get.login
表示またはリダイレクトに使用します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加