Rumah > Artikel > rangka kerja php > laravel melaksanakan pendaftaran log masuk
Laravel ialah rangka kerja PHP popular yang menyediakan persekitaran pembangunan yang berkuasa yang memudahkan untuk membina aplikasi web. Salah satu ciri penting ialah sistem pengesahan Laravel sendiri, yang membolehkan anda melaksanakan pengesahan pengguna dengan cepat, termasuk log masuk dan pendaftaran. Dalam artikel ini, kami akan menunjukkan cara melaksanakan pendaftaran log masuk menggunakan Laravel.
Persekitaran Penerapan
Sebelum kita mula melaksanakan pengesahan, kita perlu memastikan bahawa persekitaran Laravel telah dikonfigurasikan dan sambungan pangkalan data telah dikonfigurasikan. Jika anda belum memasang Laravel lagi, anda boleh merujuk kepada panduan pemasangan dalam dokumentasi rasmi. Dalam aplikasi Laravel, kami mencipta fail dan struktur direktori yang diperlukan menggunakan alat baris arahan Artisan. Daripada baris arahan, kita boleh mencipta aplikasi Laravel baharu menggunakan arahan berikut:
composer create-project --prefer-dist laravel/laravel blog
Selepas mencipta, navigasi ke aplikasi In direktori root, jalankan arahan berikut untuk menjana kekunci aplikasi:
php artisan key:generate
Daftar Laluan
Dalam Laravel, penghalaan ialah jambatan yang menyambungkan URI dan kaedah pengawal yang sepadan. Untuk mendaftarkan laluan pengesahan kami, kami perlu mengemas kini fail route/web.php. Dalam fail ini, kami mentakrifkan laluan untuk aplikasi, yang termasuk laluan log masuk dan pendaftaran.
Pertama, kita perlu menentukan laluan yang menghantar permintaan POST ke /mendaftar dan mengikatnya dengan kaedah register() RegisterController. Ini akan memberikan borang pendaftaran di mana pengguna boleh mengisi nama pengguna dan kata laluan mereka.
Route::post('/register', 'AuthRegisterController@register')->name('register');
Seterusnya, kita perlu menentukan permintaan POST untuk dihantar ke /laluan log masuk dan ikatkannya pada kaedah log masuk() LoginController. Ini akan memberikan borang log masuk di mana pengguna boleh mengisi nama log masuk dan kata laluan mereka. Jika pengguna tidak mempunyai kelayakan yang sah untuk mengesahkan, aplikasi akan mengubah hala ke borang log masuk.
Route::post('/login', 'AuthLoginController@login')->name('login');
Akhir sekali, kita perlu mentakrifkan semua laluan yang dilindungi. Dalam Laravel, kita boleh menggunakan perisian tengah auth untuk memastikan bahawa pengguna telah disahkan. Perisian tengah ini secara automatik akan mengubah hala pengguna yang tidak disahkan ke laluan /log masuk.
Route::middleware(['auth'])->group(function () {
// your protected routes go here
});
Pengawal Pengendalian
Kami mempunyai laluan yang diperlukan ditakrifkan, kini ia perlu dikendalikan dalam pengawal. Dalam Laravel, pengawal ialah kelas yang mengendalikan permintaan HTTP tertentu dan kaedah dalam pengawal mengembalikan respons HTTP. Dalam aplikasi, kita perlu mencipta dua pengawal untuk mengendalikan permintaan pendaftaran dan log masuk.
Dalam direktori app/Http/Controllers/Auth, buat dua fail, LoginController.php dan RegisterController.php. Kedua-dua fail ini ialah kelas pengawal yang disertakan dengan Laravel. Dalam pengawal ini, kita perlu mengatasi kaedah lalai Laravel untuk menyediakan fungsi tersuai untuk permintaan log masuk dan pendaftaran.
Pengawal Log Masuk
Mari lihat dahulu pengawal LoginController.php. Pengawal ini mengandungi dua kaedah: showLoginForm() dan log masuk().
Kaedah showLoginForm() mengembalikan paparan borang log masuk (resources/views/auth/login.blade.php), yang mengandungi borang di mana pengguna boleh memasukkan nama log masuk dan kata laluan mereka. Kaedah ini disediakan oleh Laravel.
fungsi awam showLoginForm()
{
return view('auth.login');
}
kaedah log masuk() ialah tempat logik log masuk sebenarnya dilaksanakan. Kaedah ini menerima contoh IlluminateHttpRequest dan mengesahkan input pengguna menggunakan kaedah validate() contoh. Jika pengesahan borang berjaya, Laravel akan mencari pengguna secara automatik dengan log masuk dan kata laluan yang diberikan dan log masuk ke dalam aplikasi.
log masuk fungsi awam(Request $request)
{
$request->validate([ 'email' => 'required|string|email', 'password' => 'required|string', 'remember' => 'boolean' ]); $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials, $request->remember)) { return redirect()->intended('dashboard'); } return redirect()->back()->withInput($request->only('email', 'remember'));
}
Perhatikan bahawa kaedah percubaan() akan menyemak secara automatik sama ada kata laluan itu betul berdasarkan tauliah yang diberi. Jika kata laluan salah, palsu akan dikembalikan.
Jika pengguna telah berjaya mengesahkan dan URL yang mereka minta sebelum ini disimpan (biasanya URL disekat oleh perisian tengah auth), kami boleh menggunakan fungsi pembantu Laravel intended() untuk mengubah hala mereka ke URL tersebut. Jika tiada URL disimpan, ubah hala ke papan pemuka bahagian hadapan (/papan pemuka).
Register Controller
Seterusnya kita lihat pada RegisterController.php controller. Sebagai tambahan kepada kaedah lalai Laravel, kita juga perlu melaksanakan kaedah register(). Kaedah
register() sangat serupa dengan kaedah log masuk(). Ia menerima contoh IlluminateHttpRequest dan mengesahkan input pengguna menggunakan kaedah validate() contoh. Jika pengesahan borang berjaya, Laravel akan mencipta pengguna baharu dan menyimpannya ke pangkalan data. Kami kemudiannya boleh menggunakan tingkah laku lalai Laravel untuk log masuk pengguna ke dalam aplikasi.
daftar fungsi awam(Request $request)
{
$request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); Auth::login($user); return redirect()->intended('dashboard');
}
Dalam pengawal pendaftaran kita boleh menggunakan fungsi tambahan Hash untuk menyulitkan kata laluan. Jika pengesahan kata laluan berjaya, kami mencipta pengguna baharu dan log masuk dia ke dalam aplikasi.
Lihat Lapisan
Sekarang kita telah menentukan laluan dan pengawal yang diperlukan, kita perlu mencipta paparan pengesahan.
在 resources/views/auth 目录中,我们可以创建 login.blade.php 和 register.blade.php 两个视图文件。这些视图包含登录和注册表单,使用了一些 Laravel 帮助程序,可以处理表单验证并显示错误消息。
登录视图
在 login.blade.php 文件中,我们可以使用 Laravel 的 Form 辅助函数创建登录表单。这个函数会自动为表单添加 CSRF 令牌,并为输入字段编写 HTML 标记。
71085032ff00cb55c43cd8d91e1cd1ac
@csrf <div class="form-group row"> <label for="email" class="col-sm-4 col-form-label text-md-right">{{ __('Email Address') }}</label> <div class="col-md-6"> <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required autofocus> @if ($errors->has('email')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('email') }}</strong> </span> @endif </div> </div> <div class="form-group row"> <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> <div class="col-md-6"> <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required> @if ($errors->has('password')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('password') }}</strong> </span> @endif </div> </div> <div class="form-group row"> <div class="col-md-6 offset-md-4"> <div class="form-check"> <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}> <label class="form-check-label" for="remember"> {{ __('Remember Me') }} </label> </div> </div> </div> <div class="form-group row mb-0"> <div class="col-md-8 offset-md-4"> <button type="submit" class="btn btn-primary"> {{ __('Login') }} </button> @if (Route::has('password.request')) <a class="btn btn-link" href="{{ route('password.request') }}"> {{ __('Forgot Your Password?') }} </a> @endif </div> </div>
f5a47148e367a6035fd7a2faa965022e
注意,我们使用了 Blade 模板引擎的 @csrf 和 @if 语句来生成必要的 CSRF 令牌并显示验证错误。
注册视图
在 register.blade.php 文件中,我们可以使用 Laravel 的 Form 帮助器创建注册表单。这个函数自动为表单添加 CSRF 令牌,并为输入字段编写 HTML 标记。
b42125e3aba3ade041a95113cf783d0b
@csrf <div class="form-group row"> <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label> <div class="col-md-6"> <input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus> @if ($errors->has('name')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('name') }}</strong> </span> @endif </div> </div> <div class="form-group row"> <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> <div class="col-md-6"> <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required> @if ($errors->has('email')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('email') }}</strong> </span> @endif </div> </div> <div class="form-group row"> <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> <div class="col-md-6"> <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required> @if ($errors->has('password')) <span class="invalid-feedback" role="alert"> <strong>{{ $errors->first('password') }}</strong> </span> @endif </div> </div> <div class="form-group row"> <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label> <div class="col-md-6"> <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required> </div> </div> <div class="form-group row mb-0"> <div class="col-md-6 offset-md-4"> <button type="submit" class="btn btn-primary"> {{ __('Register') }} </button> </div> </div>
f5a47148e367a6035fd7a2faa965022e
注意,我们使用了 Blade 模板引擎的 @csrf 和 @if 语句来生成必要的 CSRF 令牌并显示验证错误消息。
结论
通过 Laravel 可以快速、方便、安全地实现 Web 应用程序的登录和注册身份验证功能,从而保护您的应用程序免受未授权的访问。在本文中,我们介绍了 Laravel 的身份验证系统并实现了注册和登录。现在,您可以使用这些基础知识构建更完整的用户身份验证系统,或将其集成到您的现有应用程序中。
Atas ialah kandungan terperinci laravel melaksanakan pendaftaran log masuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!