您好,登錄后才能下訂單哦!
在 Laravel 中實現(xiàn)用戶注冊和登錄功能非常簡單,因為 Laravel 已經(jīng)內(nèi)置了強大的認證系統(tǒng)。下面是一個簡單的步驟來實現(xiàn)用戶注冊和登錄功能:
首先,你需要創(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();
});
}
接下來,運行遷移文件以創(chuàng)建用戶表:
php artisan migrate
運行以下命令創(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', '注冊成功!');
}
運行以下命令創(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ù)無效。']);
}
打開 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']);
在 resources/views
目錄下創(chuàng)建一個名為 auth
的文件夾,并在其中創(chuàng)建 register.blade.php
和 login.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
路由,你可以嘗試使用注冊和登錄表單。
免責(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)容。