ホームページ >バックエンド開発 >PHPチュートリアル >Laravelで認証後にユーザーを目的の宛先にリダイレクトするにはどうすればよいですか?

Laravelで認証後にユーザーを目的の宛先にリダイレクトするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 12:13:17780ブラウズ

How to Redirect Users to Their Intended Destination After Authorization in Laravel?

Laravel での承認後に元の宛先にリダイレクトする

ユーザーの承認後に目的の宛先にリダイレクトすることは、Web アプリケーションの一般的な要件です。 Laravel でこれを実現するには、認可の仕組みを理解し、適切なテクニックを利用する必要があります。

認可プロセス

ユーザーが保護されたルートにアクセスしようとすると、Laravel の認証ミドルウェアが、認証ミドルウェアなどはリクエストをインターセプトします。ユーザーがログインしていない場合は、ログイン ページにリダイレクトされます。

元の宛先の決定

ログイン後、ユーザーの元のページを決定する必要があります。認証プロセスが開始される前にアクセスしようとしました。 Laravel は、このための組み込み機能を提供します。

Laravel 5.3 以降

Laravel 5.3 以降、目的のヘルパー メソッドが導入されました。ログイン コントローラーで、認証が成功した後:

return redirect()->intended('/');

これにより、ユーザーは最初にアクセスしようとしていたページにリダイレクトされます。

Laravel 5 5.2 まで

Laravel 5 から 5.2 まででは、Redirect で意図された() メソッドを利用できます。 class:

return redirect()->intended('defaultpage');

意図したページが設定されていない場合は、ホームページなどの指定されたデフォルトのページにリダイレクトされます。

Laravel 4 以前

Laravel 5.3 より前では、この機能の公式サポートは不足していました。 1 つのアプローチでは、認可プロセス中に目的の URL をセッションに保存し、ログインに成功した後にその URL にリダイレクトします。

// In the authorization filter
if (Auth::guest()) {
    Session::put('intended', Request::fullUrl());
    return Redirect::guest('login');
}

// In the login controller
if (Auth::attempt(['email' => $email, 'password' => $password])) {
    $intended = Session::get('intended');
    Session::forget('intended');
    return Redirect::to($intended ?: 'defaultpage');
}

手動実装

この機能を手動で実装すると、ログイン後に目的の宛先を選択できるページにユーザーをリダイレクトできます。あるいは、目的のページを一時変数に保存することもできます。 (例: Cookie)、承認が成功するとすぐにユーザーをそれにリダイレクトします。

以上がLaravelで認証後にユーザーを目的の宛先にリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。