首頁  >  文章  >  php框架  >  laravel 登入 跳轉

laravel 登入 跳轉

WBOY
WBOY原創
2023-05-29 10:41:37343瀏覽

作為一個開源的 PHP Web 框架,Laravel 一直以來都備受 Web 開發者的青睞。其強大的功能與易用性皆為其優勢。對於一個 Web 應用程式來說,登入是非常基礎的功能之一。在 Laravel 中,我們可以很快地實現使用者登錄,並且進行跳轉。

下面,我們就來講一下 Laravel 中使用者登入和跳轉的實作方法。

前置條件

在開始編寫程式碼之前,我們首先需要確保以下條件:

  • 擁有Laravel 環境;
  • #已經開啟了Laravel 的身份認證功能。

如果你還沒有開啟Laravel 的身份認證功能,可以在終端機裡進入到專案根目錄並輸入以下指令:

php artisan make:auth

對於已開啟身分認證功能的Laravel 項目,我們便可以依照下列步驟進行實作。

使用者登入

在 Laravel 中,我們可以透過表單來取得使用者輸入的使用者名稱和密碼。一般而言,我們會在表單中設定為Post 方法,並且提交到一個叫做LoginController 的控制器中,如下程式碼所示:

<form method="POST" action="{{ route('login') }}">
    @csrf

    <div>
        <label for="email">邮箱</label>

        <div>
            <input id="email" type="email" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
        </div>
    </div>

    <div>
        <label for="password">密码</label>

        <div>
            <input id="password" type="password" name="password" required autocomplete="current-password">
        </div>
    </div>

    <div>
        <div>
            <div>
                <input type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>

                <label for="remember">
                    记住我
                </label>
            </div>
        </div>
    </div>

    <div>
        <div>
            <button type="submit">
                登录
            </button>

            @if (Route::has('password.request'))
                <a href="{{ route('password.request') }}">
                    忘记密码了?
                </a>
            @endif
        </div>
    </div>
</form>

當使用者填寫完表單資訊後,點擊「登入」按鈕,便會提交資料到LoginController 控制器中。

我們在app/Http/Controllers/Auth/LoginController.php 檔案中找到login 方法,將方法的內容修改如下:

use IlluminateHttpRequest;

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (Auth::attempt($credentials)) {
        // 认证成功后的操作
    }

    return back()->withErrors(
        ['email' => '用户名或密码错误']
    );
}

以上程式碼中,我們先取得了使用者表單所提交的數據,即郵箱和密碼。緊接著,我們嘗試使用 Auth::attempt() 方法對使用者進行身份認證。如果使用者認證成功,則在 if 語句中進行後續操作,否則傳回錯誤訊息,提示使用者使用者名稱或密碼錯誤,並重新載入登入介面。

跳轉

當使用者成功登入之後,我們需要將使用者跳到指定的頁面。在 Laravel 中,有兩種​​實作方式,分別如下。

控制器方式

我們可以透過在 LoginController 控制器中增加 authenticated() 方法,來實作重定向到指定頁面。此方法會在使用者認證成功後自動呼叫。修改後的 LoginController 控制器程式碼如下:

use IlluminateHttpRequest;

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (Auth::attempt($credentials)) {
        return redirect()->intended('/home');
    }

    return back()->withErrors(
        ['email' => '用户名或密码错误']
    );
}

protected function authenticated(Request $request, $user)
{
    return redirect('/home');
}

以上程式碼中,我們可以看到 authenticated() 方法,該方法將使用者重新導向到 /home 頁面。

路由方式

我們也可以在登入成功後,透過註冊路由的方式來實現重定向。在web.php 檔案中,我們註冊以下路由:

Route::get('/home', function () {
    return view('home');
})->name('home');

Route::group(['middleware' => 'auth'], function () {
    Route::get('/', function () {
        return redirect()->route('home');
    });
});

以上程式碼中,我們在auth 中間件中註冊了預設的根路由/,當使用者登入成功後,會自動重定向到/home頁面中。

總結

以上便是在 Laravel 中使用者登入和跳轉的方法。 Laravel 提供的身份認證功能,為我們快速實現使用者登入提供了極大的幫助。同時,透過控制器和路由兩種方式,我們也可以對使用者的跳轉進行細緻控制。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn