首頁 >php框架 >Laravel >laravel框架登入註冊流程

laravel框架登入註冊流程

WBOY
WBOY原創
2023-05-29 09:58:071066瀏覽

Laravel框架是基於PHP語言開發的優秀且受歡迎的Web應用程式開發框架。 Laravel框架有非常完善的使用者登入和註冊系統,這個註冊和登入系統可以實現使用者的基本認證功能,並且可以對使用者進行一些欄位的授權操作,例如:使用者權限管理、重設密碼、郵箱驗證等等。在下面的文章中,我們將詳細闡述Laravel框架的登入和註冊流程。

  1. 使用者註冊流程

首先,我們需要建立使用者表,用於保存使用者的基本資訊。我們可以使用Laravel提供的「make:model」指令來建立該模型。在終端機中輸入以下指令:

php artisan make:model User -m

這條指令將會在app目錄下產生一個User模型,並且在資料庫產生一個users表。在User模型中,我們需要指定使用者使用的認證方式。 Laravel框架提供了多種使用者認證方式,我們可以在模型中的guard屬性中進行設定:

protected $guard = 'web';

建立好使用者模型之後,我們需要再建立一個用於展示用戶註冊頁面的控制器,我們使用以下命令來建立該控制器:

php artisan make:controller AuthRegisterController --resource

運行完這個命令之後,Laravel框架將會在appHttpControllersAuth目錄下建立一個名為 RegisterController.php的檔案。在這個控制器中,我們需要實作以下方法:

use AppUser;
use IlluminateFoundationAuthRegistersUsers;
public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);

    return redirect($this->redirectTo);
}

// 验证用户输入的数据
protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
    ]);
}

// 保存注册用户信息到数据库
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

接下來,我們需要在routes/web.php中新增該控制器的路由:

Route::get('register', 'AuthRegisterController@showRegistrationForm')->name('register');
Route::post('register', 'AuthRegisterController@register');

在前台頁面上,我們使用以下表單來收集使用者資料:

<form method="POST" action="{{ route('register') }}">
    @csrf
    <div>
        <label for="name">用户名</label>
        <input id="name" type="text" name="name" value="{{ old('name') }}" required autofocus>
    </div>

    <div>
        <label for="email">邮箱</label>
        <input id="email" type="email" name="email" value="{{ old('email') }}" required>
    </div>

    <div>
        <label for="password">密码</label>
        <input id="password" type="password" name="password" required>
    </div>

    <div>
        <label for="password-confirm">确认密码</label>
        <input id="password-confirm" type="password" name="password_confirmation" required>
    </div>

    <div>
        <button type="submit">注册</button>
    </div>
</form>

然後我們就成功地建立了使用者註冊流程。

  1. 使用者登入流程

Laravel提供了一個非常快速的使用者登入方法,我們可以使用該方法來進行使用者登入。在routes/web.php中新增以下路由:

Route::get('login', 'AuthLoginController@showLoginForm')->name('login');
Route::post('login', 'AuthLoginController@login');
Route::post('logout', 'AuthLoginController@logout')->name('logout');

然後建立一個與User模型對應的LoginController控制器。在控制器中,我們需要實作以下方法:

use IlluminateFoundationAuthAuthenticatesUsers;
public function login(Request $request)
{
    $this->validateLogin($request);

    if ($this->attemptLogin($request)) {
        return $this->sendLoginResponse($request);
    }

    return $this->sendFailedLoginResponse($request);
}

// 认证用户名和密码
protected function attemptLogin(Request $request)
{
    return $this->guard()->attempt(
        $this->credentials($request), $request->filled('remember')
    );
}

// 获取用户名和密码
protected function credentials(Request $request)
{
    return $request->only($this->username(), 'password');
}

public function username()
{
    return 'email';
}

// 用户退出登录方法
public function logout(Request $request)
{
    $this->guard()->logout();

    $request->session()->invalidate();

    return redirect('/');
}

接著,我們需要建立一個使用者登入視圖。在視圖中,我們使用以下表單來接收使用者資料:

<form method="POST" action="{{ route('login') }}">
    @csrf
    <div>
        <label for="email">邮箱</label>
        <input id="email" type="email" name="email" value="{{ old('email') }}" required autofocus>
    </div>

    <div>
        <label for="password">密码</label>
        <input id="password" type="password" name="password" required>
    </div>

    <div>
        <input type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
        <label for="remember">记住我</label>
    </div>

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

在建立好以上視圖和控制器之後,我們就實作了Laravel框架的使用者登入和註冊流程。需要注意的事項是使用者登入成功之後,需要將使用者資訊存入session中,以便於後續功能的呼叫。在控制器的第二個方法中,我們可以利用Laravel框架提供的attemptLogin方法來驗證使用者的登入信息,如果驗證通過就將使用者資訊存入session,並且將使用者重定向到子網址。

綜上,Laravel框架的使用者登入和註冊流程非常簡單易懂,透過上述步驟實現使用者登入和註冊功能只需要簡單的幾行程式碼即可。當然,如果使用者需要更進階的認證和權限管理,也可以利用Laravel框架的擴展性,在上述模型和控制器的基礎上添加一些自訂的方法。

以上是laravel框架登入註冊流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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