Rumah > Artikel > rangka kerja php > Pengesahan dan kebenaran pengguna dalam Laravel: Melindungi keselamatan dan privasi aplikasi
Pengesahan dan kebenaran pengguna dalam Laravel: Melindungi keselamatan dan privasi aplikasi
Pengenalan
Dalam era perkembangan pesat teknologi maklumat hari ini, melindungi keselamatan dan privasi aplikasi menjadi semakin penting. Untuk aplikasi web, pengesahan dan kebenaran pengguna adalah komponen penting untuk memastikan keselamatan aplikasi. Rangka kerja Laravel membantu pembangun melindungi keselamatan dan privasi aplikasi dengan berkesan dengan menyediakan fungsi pengesahan dan kebenaran pengguna yang mudah digunakan. Artikel ini akan memperkenalkan pengesahan dan kebenaran pengguna dalam Laravel dan memberikan beberapa contoh kod.
1. Pengesahan pengguna
Mendaftar pengguna baharu
Dalam Laravel, kami boleh melaksanakan fungsi pendaftaran pengguna dengan menggunakan pengawal dan paparan pengesahan terbina dalam. Mula-mula, tambah laluan berikut dalam fail route/web.php:
Route::get('register', 'AuthRegisterController@showRegistrationForm')->name('register'); Route::post('register', 'AuthRegisterController@register');
Kemudian, tambah kaedah berikut dalam app/Http/Controllers/Auth/RegisterController.php:
public function showRegistrationForm() { return view('auth.register'); } public function register(Request $request) { $this->validate($request, [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); // 用户注册后的操作,如发送邮件等 // 返回登录页面 return redirect('/login'); }
Log masuk pengguna
Serupa dengan pendaftaran, log masuk pengguna Ini juga boleh dicapai melalui pengawal dan pandangan pengesahan terbina dalam. Tambah laluan berikut dalam fail route/web.php:
Route::get('login', 'AuthLoginController@showLoginForm')->name('login'); Route::post('login', 'AuthLoginController@login');
Tambah kaedah berikut dalam app/Http/Controllers/Auth/LoginController.php:
public function showLoginForm() { return view('auth.login'); } public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { // 认证通过,登录用户 return redirect('/dashboard'); } // 认证失败,返回登录页面 return redirect('/login')->withErrors(['email' => '登录失败']); }
Log Keluar Pengguna
Untuk log keluar pengguna cuma tambah laluan/ web.php Cuma tambahkan laluan berikut pada fail:
Route::post('logout', 'AuthLoginController@logout')->name('logout');
Tambah kaedah berikut dalam app/Http/Controllers/Auth/LoginController.php:
public function logout(Request $request) { Auth::logout(); // 返回登录页面 return redirect('/login'); }
2. Keizinan pengguna
Dalam Laravel, kebenaran pengguna ditakrifkan oleh dasar (Dasar ) untuk dicapai. Berikut ialah contoh mudah yang menunjukkan cara menggunakan dasar untuk membenarkan pengguna melaksanakan operasi (seperti mengedit, memadam) pada model tertentu:
Buat dasar
Mula-mula, buat fail kelas baharu dalam apl/Dasar direktori, Namakannya PostPolicy.php:
<?php namespace AppPolicies; use AppUser; use AppPost; use IlluminateAuthAccessHandlesAuthorization; class PostPolicy { use HandlesAuthorization; public function update(User $user, Post $post) { return $user->id === $post->user_id; } public function delete(User $user, Post $post) { return $user->id === $post->user_id; } }
Daftar polisi
Daftar polisi dalam atribut $policies dalam app/Providers/AuthServiceProvider.php:
/** * 应用程序的策略映射关系。 * * @var array */ protected $policies = [ Post::class => PostPolicy::class, ];
Gunakan dasar itu diperlukan, di sini diperlukan kebenaran kebenaran kaedah untuk mengesahkan Sama ada pengguna mempunyai kebenaran untuk melakukan operasi. Contohnya, dalam kaedah kemas kini PostController:
public function update(Request $request, Post $post) { $this->authorize('update', $post); // 更新文章的逻辑 }Dalam fail paparan, anda boleh menggunakan arahan @can untuk menentukan sama ada pengguna mempunyai kebenaran untuk melaksanakan operasi. Contohnya:
@can('update', $post) <a href="{{ url('posts/'.$post->id.'/edit') }}">编辑文章</a> @endcan
Pengesahan dan kebenaran pengguna adalah bahagian penting dalam melindungi keselamatan dan privasi aplikasi. Rangka kerja Laravel menyediakan fungsi pengesahan dan kebenaran pengguna yang ringkas dan mudah digunakan Melalui kod contoh di atas, kami dapat memahami dengan jelas cara melaksanakan pengesahan dan kebenaran pengguna dalam aplikasi Laravel. Dengan menggunakan ciri ini dengan betul, kami boleh membantu aplikasi menghalang capaian yang tidak dibenarkan dan menyediakan pengguna dengan perkhidmatan yang selamat dan boleh dipercayai.
Atas ialah kandungan terperinci Pengesahan dan kebenaran pengguna dalam Laravel: Melindungi keselamatan dan privasi aplikasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!