Laravelにログインしていないユーザーをリダイレクトする方法

PHPz
リリース: 2023-04-07 17:23:16
オリジナル
821 人が閲覧しました

Laravel は、現在最も人気のある PHP 開発フレームワークの 1 つです。 Web アプリケーションの迅速な開発とテストに役立つ多くの便利な機能とツールが提供されます。重要な機能の 1 つはユーザー認証 (Authentication) システムです。ほとんどのアプリケーションでは、認証されたユーザーのみが機密ページや機能にアクセスできるようにする必要があります。この記事では、Laravel で非ログインユーザージャンプを実装する方法を紹介し、いくつかの役立つヒントと提案を提供します。

ミドルウェアを使用してログに記録されていないユーザーをリダイレクトする

Laravel では、ミドルウェアを使用してリクエストを処理できます。ミドルウェアは、リクエストがコントローラーに到達する前または後に特定のアクションを実行するのに役立ちます。このアプリケーションでは、ミドルウェアを使用して、ユーザーがすでにログインしているかどうかを確認できます。ユーザーがログインしていない場合は、ログイン ページにリダイレクトできます。

まず、ゲストというミドルウェアを設定しましょう。 Artisan コマンド php 職人 make:middleware GuestMiddleware を使用して作成できます。次に、ゲスト ミドルウェアにコードを記述して、ユーザーがログインしているかどうかを確認します。

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        return redirect('/home');
    }
    return $next($request);
}
ログイン後にコピー

ここでは、Auth::guard($guard)->check() を使用して、ユーザーがログインしているかどうかを確認します。ログインしました。その場合、ユーザーを /home ページにリダイレクトします。そうでない場合、制御は次のミドルウェアまたはコントローラーのアクションに渡されます。

次に、ルート定義でゲスト ミドルウェアを使用できます。たとえば、web.php ファイルで次のルートを定義できます。

Route::group(['middleware' => ['guest']], function () {
    Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
    Route::post('login', 'Auth\LoginController@login');
});
ログイン後にコピー

ここでは、ゲスト ミドルウェアをルート グループ全体に適用します。これは、/login にアクセスしてログイン フォームを送信するときに、ゲスト ミドルウェアがユーザーがすでにログインしているかどうかを確認することを意味します。ユーザーがすでにログインしている場合は、/home ページにリダイレクトされます。それ以外の場合、コントローラーの操作は継続されます。

認証コントローラーを使用して非ログイン ユーザーにジャンプする

非ログイン ユーザーにジャンプする別の方法は、認証コントローラーの特性を使用することです。 Laravel では、いくつかのトレイトを使用してユーザー認証機能を簡単に実装できます。これらの特性の 1 つは、Illuminate\Foundation\Auth\AuthenticatesUsers です。この特性には、ログインおよびログアウトしたユーザーの操作と、リダイレクト ロジックが含まれています。

まず、CustomLoginController というコントローラーを作成し、AuthenticatesUsers トレイトを使用しましょう。

use Illuminate\Foundation\Auth\AuthenticatesUsers;

class CustomLoginController extends Controller
{
    use AuthenticatesUsers;
}
ログイン後にコピー

ここでは、CustomLoginController に AuthenticatesUsers トレイトを使用させます。

次に、AuthenticatesUsers トレイトの showLoginForm メソッドと認証されたメソッドをオーバーライドできます。これらのメソッドでは、ログイン ページとリダイレクト ロジックを指定できます。

use Illuminate\Foundation\Auth\AuthenticatesUsers;

class CustomLoginController extends Controller
{
    use AuthenticatesUsers;

    protected function showLoginForm()
    {
        return view('auth.login');
    }

    protected function authenticated(Request $request, $user)
    {
        return redirect()->route('home');
    }
}
ログイン後にコピー

ここでは、showLoginForm メソッドをオーバーライドしてビュー「auth.login」を返します。認証されたメソッドをオーバーライドして、ルート「home」にリダイレクトします。

最後に、web.php ファイルで次のルートを定義できます:

Route::get('login', 'CustomLoginController@showLoginForm')->name('login');
Route::post('login', 'CustomLoginController@login');
Route::get('home', function () {
    return view('home');
})->name('home');
ログイン後にコピー

ここでは、ログイン ページの GET ルート、ログイン フォームを送信するための POST ルート、およびホームページの GET ルート。 CustomLoginController では、作成した showLoginForm および認証されたメソッドがログイン フォームとリダイレクト ロジックを処理します。

結論

この記事では、Laravelで非ログインユーザージャンプを実装する方法を紹介しました。これを実現するには、ミドルウェアを使用する方法と認証コントローラーを使用する方法の 2 つがあります。どの方法を選択しても、認証されたユーザーのみがアクセスできるようにすることで、機密性の高いページや機能を保護できます。 Laravel アプリケーションを開発している場合、これらのヒントとアドバイスは非常に役立つはずです。

以上がLaravelにログインしていないユーザーをリダイレクトする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!