溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Laravel實現(xiàn)用戶注冊登錄

發(fā)布時間:2024-11-10 05:09:40 來源:億速云 閱讀:78 作者:小樊 欄目:編程語言

在 Laravel 中實現(xiàn)用戶注冊和登錄功能非常簡單,因為 Laravel 已經(jīng)內(nèi)置了強大的認證系統(tǒng)。下面是一個簡單的步驟來實現(xiàn)用戶注冊和登錄功能:

  1. 創(chuàng)建數(shù)據(jù)庫遷移文件

首先,你需要創(chuàng)建一個數(shù)據(jù)庫遷移文件來定義用戶表的結(jié)構(gòu)。運行以下命令:

php artisan make:migration create_users_table --create=users

這將在 database/migrations 目錄下生成一個新的遷移文件。打開該文件并定義用戶表結(jié)構(gòu),例如:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}
  1. 運行遷移文件

接下來,運行遷移文件以創(chuàng)建用戶表:

php artisan migrate
  1. 創(chuàng)建注冊控制器

運行以下命令創(chuàng)建一個注冊控制器:

php artisan make:controller RegisterController

打開新創(chuàng)建的 RegisterController.php 文件,位于 app/Http/Controllers 目錄下。修改 register 方法以實現(xiàn)注冊邏輯:

use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;

public function register(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:8|confirmed',
    ]);

    if ($validator->fails()) {
        return redirect()->back()->withErrors($validator)->withInput();
    }

    $user = User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => Hash::make($request->password),
    ]);

    return redirect()->route('login')->with('success', '注冊成功!');
}
  1. 創(chuàng)建登錄控制器

運行以下命令創(chuàng)建一個登錄控制器:

php artisan make:controller LoginController

打開新創(chuàng)建的 LoginController.php 文件,位于 app/Http/Controllers 目錄下。修改 login 方法以實現(xiàn)登錄邏輯:

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

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

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

    return redirect()->back()->withErrors(['email' => '這些憑據(jù)無效。']);
}
  1. 創(chuàng)建路由

打開 routes/web.php 文件,添加注冊和登錄路由:

use App\Http\Controllers\Auth\RegisterController;
use App\Http\Controllers\Auth\LoginController;

Route::get('/register', [RegisterController::class, 'showRegistrationForm'])->name('register');
Route::post('/register', [RegisterController::class, 'register']);

Route::get('/login', [LoginController::class, 'showLoginForm'])->name('login');
Route::post('/login', [LoginController::class, 'login']);
  1. 創(chuàng)建視圖

resources/views 目錄下創(chuàng)建一個名為 auth 的文件夾,并在其中創(chuàng)建 register.blade.phplogin.blade.php 文件。這兩個文件將分別用于顯示注冊和登錄表單。

register.blade.php 示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>注冊</title>
</head>
<body>
    <h1>注冊</h1>
    <form method="POST" action="{{ route('register') }}">
        @csrf
        <!-- 表單字段 -->
    </form>
</body>
</html>

login.blade.php 示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登錄</title>
</head>
<body>
    <h1>登錄</h1>
    <form method="POST" action="{{ route('login') }}">
        @csrf
        <!-- 表單字段 -->
    </form>
</body>
</html>

現(xiàn)在,你已經(jīng)成功實現(xiàn)了用戶注冊和登錄功能。訪問 /register/login 路由,你可以嘗試使用注冊和登錄表單。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI