Rumah > rangka kerja php > Laravel > teks badan

Pengesahan dan kebenaran pengguna dalam Laravel: Melindungi keselamatan dan privasi aplikasi

王林
Lepaskan: 2023-08-27 10:00:41
asal
1380 orang telah melayarinya

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

  1. 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');
    Salin selepas log masuk

    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');
    }
    Salin selepas log masuk
  2. 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');
    Salin selepas log masuk

    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' => '登录失败']);
    }
    Salin selepas log masuk
  3. 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');
    Salin selepas log masuk

    Tambah kaedah berikut dalam app/Http/Controllers/Auth/LoginController.php:

    public function logout(Request $request)
    {
     Auth::logout();
    
     // 返回登录页面
     return redirect('/login');
    }
    Salin selepas log masuk

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:

  1. 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;
     }
    }
    Salin selepas log masuk
  2. Daftar polisi
    Daftar polisi dalam atribut $policies dalam app/Providers/AuthServiceProvider.php:

    /**
     * 应用程序的策略映射关系。
     *
     * @var array
     */
    protected $policies = [
     Post::class => PostPolicy::class,
    ];
    Salin selepas log masuk
  3. 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);
    
     // 更新文章的逻辑
    }
    Salin selepas log masuk

    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
    Salin selepas log masuk
Kesimpulan

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan