首頁 > php框架 > Laravel > 主體

laravel如何實現登入後跳轉功能

PHPz
發布: 2023-04-21 11:15:40
原創
827 人瀏覽過

Laravel 是目前使用最廣泛的 PHP Web 框架,它的登入功能非常常用,而登入成功後跳到指定頁面也是常見需求之一。本文將詳細介紹 Laravel 中如何實現登入後跳轉功能。

1. 安裝Laravel

如果您還沒有安裝Laravel,可以按照以下步驟進行安裝:

  1. 安裝Laravel 安裝器:composer global require laravel/installer
  2. 建立新專案:laravel new project_name
  3. 進入專案目錄:cd project_name
  4. #啟動Laravel 內建伺服器:php artisan serve

在本文中,我們將使用預設配置進行開發,如果您使用了其他配置,可能會稍有不同。

2. 實作登入功能

在 Laravel 中實作登入功能非常簡單,只需要使用 Auth 中間件即可。在 routes/web.php 檔案中增加以下路由:

Route::get('/login', 'LoginController@showLoginForm')->name('login');
Route::post('/login', 'LoginController@login');
登入後複製

這兩個路由分別對應登入頁面的顯示和登入作業的處理。其中,LoginController@showLoginForm 方法用於顯示登入表單,LoginController@login 方法用於處理使用者提交的登入要求。

如果您還沒有建立LoginController,可以透過以下指令快速建立:

php artisan make:controller LoginController
登入後複製

LoginController 中,可以使用Laravel 提供的AuthenticatesUsers trait 快速實現登入功能。只需要在類別中引入此trait 即可:

use AuthenticatesUsers;

public function __construct()
{
    $this->middleware('guest')->except('logout');
}
登入後複製

預設情況下,登入成功後會跳到/home 頁面,可以在Auth\LoginController#中修改$redirectTo 屬性來指定使用者登入成功後跳轉的頁面。

protected $redirectTo = '/dashboard';//修改为你要跳转的路径
登入後複製

3. 實作登入後跳轉

在Laravel 實現登入後跳轉也非常簡單,只需要在登入控制器中修改$redirectTo 屬性即可。但是,如果您希望登入成功後跳到使用者先前造訪的頁面,那麼需要進行以下操作:

  1. 建立RedirectIfAuthenticated 中間件

#在app/Http/Middleware 目錄下建立RedirectIfAuthenticated.php 文件,並加入以下程式碼:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;

class RedirectIfAuthenticated
{
    public function handle(Request $request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect()->intended('/dashboard');//修改为登录成功后要跳转的路径
        }

        return $next($request);
    }
}
登入後複製

程式碼中的intended 方法會嘗試將使用者重新導向到他們最初請求頁面的位置,如果沒有先前的位置,則預設會重新導向到指定的路徑。

  1. app/Http/Kernel.php 中註冊中間件

app/Http/Kernel.php#檔案中的$routeMiddleware 陣列中註冊新增的中間件:

protected $routeMiddleware = [
    // ... 其他中间件省略
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
];
登入後複製
  1. 修改登入控制器

在登入控制器中,將登入成功後重定向的目標位址修改為intended 方法,即可實現登入後跳到使用者之前造訪的頁面:

protected $redirectTo = '/dashboard';//删除这行
登入後複製
public function login(Request $request)
{
    $this->validateLogin($request);

    if ($this->attemptLogin($request)) {
        // 登录成功后跳转到用户之前访问的页面
        return redirect()->intended('/dashboard');
    }

    $this->incrementLoginAttempts($request);

    return $this->sendFailedLoginResponse($request);
}
登入後複製

4. 總結

在本文中,我們學習了在Laravel 實現登入後跳轉需要進行哪些操作。首先,我們需要使用 Auth 中間件實作登入功能。然後,我們透過修改登入控制器中的 $redirectTo 屬性來實現登入之後的跳躍。最後,我們透過建立中間件和修改登入控制器中的程式碼來實現登入後跳到使用者之前造訪的頁面。

希望本文能幫助您輕鬆實現 Laravel 中的登入後跳轉功能!

以上是laravel如何實現登入後跳轉功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!