Perisian tengah Laravel: mengawal akses aplikasi dan pengurusan peranan

WBOY
Lepaskan: 2023-07-28 13:42:02
asal
1446 orang telah melayarinya

Laravel middleware: Kawal hak akses aplikasi dan pengurusan peranan

Pengenalan:
Apabila membangunkan aplikasi web, selalunya perlu untuk mengawal hak akses pengguna untuk memastikan keselamatan aplikasi. Perisian tengah dalam Laravel menyediakan cara ringkas dan fleksibel untuk mengurus kebenaran dan peranan aplikasi Artikel ini akan memperkenalkan cara menggunakan perisian tengah Laravel untuk mengawal kebenaran akses aplikasi dan pengurusan peranan.

1. Apakah middleware
Sebelum kita memahami dengan mendalam bagaimana middleware Laravel mengurus kebenaran dan peranan, kita perlu memahami dahulu apa itu middleware. Dalam Laravel, middleware ialah mekanisme yang mengendalikan permintaan sebelum atau selepas mereka memasuki laluan. Ia boleh digunakan untuk menyemak sama ada permintaan itu memenuhi syarat tertentu, seperti pengesahan identiti, pengesahan kebenaran, dsb. Peranan middleware adalah untuk mempraproses permintaan sebelum ia mencapai pemprosesan penghalaan atau untuk memproses tindak balas selepas pemprosesan penghalaan.

2 Pengurusan kebenaran perisian tengah dan aplikasi
Dalam aplikasi, kami selalunya perlu mengurus kebenaran akses pengguna yang berbeza untuk memastikan pengguna hanya boleh mengakses halaman yang mereka mempunyai kebenaran. Perisian tengah Laravel memberikan kami mekanisme pengurusan kebenaran yang mudah tetapi berkuasa.

  1. Buat middleware
    Pertama, kita perlu mencipta middleware untuk mengesahkan kebenaran pengguna. Anda boleh menggunakan arahan php artisan make:middleware CheckPermission untuk mencipta perisian tengah yang dipanggil CheckPermission. Selepas mencipta middleware, kita boleh mencari fail CheckPermission.php dalam direktori app/Http/Middleware.
  2. Laksanakan logik pengesahan kebenaran
    Dalam kaedah pemegang perisian tengah CheckPermission, kami boleh menulis logik untuk mengesahkan kebenaran pengguna. Berikut ialah contoh mudah:
<?php

namespace AppHttpMiddleware;

use Closure;

class CheckPermission
{
    public function handle($request, Closure $next)
    {
        // 验证用户的权限
        if (!auth()->user()->hasPermission('admin')) {
            abort(403, 'Unauthorized action.');
        }

        return $next($request);
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami menganggap bahawa pengguna perlu mempunyai kebenaran yang dipanggil 'admin' untuk mengakses halaman tertentu. Jika pengguna tidak mempunyai kebenaran ini, ralat 403 akan dikembalikan.

  1. Daftar middleware
    Dalam Laravel, kita perlu mendaftarkan middleware ke dalam laluan untuk berkuat kuasa. Kita boleh mendaftarkan middleware ke dalam tatasusunan $routeMiddleware dalam fail Kernel.php. Sebagai contoh, kami mendaftarkan perisian tengah CheckPermission sebagai alias 'can.access':
protected $routeMiddleware = [
    // ...
    'can.access' => AppHttpMiddlewareCheckPermission::class,
];
Salin selepas log masuk

Dengan cara ini, kami boleh menggunakan perisian tengah dalam laluan yang memerlukan pengesahan kebenaran.

  1. Memohon middleware
    Dalam laluan yang memerlukan pengesahan kebenaran, kami boleh menggunakan middleware melalui alias perisian tengah. Contohnya:
Route::get('/admin/dashboard', function () {
    // ...
})->middleware('can.access');
Salin selepas log masuk

Dengan kod di atas, kami boleh memastikan hanya pengguna dengan kebenaran 'admin' boleh mengakses halaman '/admin/dashboard'.

3. Pengurusan peranan perisian tengah dan aplikasi
Dalam pembangunan sebenar, selain mengurus hak akses pengguna, ia juga perlu untuk mengurus peranan pengguna. Perisian tengah Laravel juga menyediakan cara yang ringkas dan fleksibel untuk mengurus peranan pengguna.

  1. Buat middleware
    Kami boleh menggunakan perisian tengah CheckPermission yang dibuat di bahagian sebelumnya untuk melaksanakan logik pengesahan peranan. Cuma laraskan kod pengesahan kebenaran kepada logik pengesahan peranan. Contohnya:
public function handle($request, Closure $next, $role)
{
    // 验证用户的角色
    if (!auth()->user()->hasRole($role)) {
        abort(403, 'Unauthorized action.');
    }

    return $next($request);
}
Salin selepas log masuk

Dalam kod di atas, kami menambah parameter $role untuk lulus peranan yang perlu disahkan.

  1. Daftar middleware
    Begitu juga, daftar middleware dalam fail Kernel.php dan nyatakan alias middleware pengesahan peranan:
protected $routeMiddleware = [
    // ...
    'has.role' => AppHttpMiddlewareCheckPermission::class,
];
Salin selepas log masuk
  1. Guna middleware
    Dalam laluan yang memerlukan pengesahan peranan, kita boleh menghantar alias middleware ke gunakan perisian tengah. Contohnya:
Route::get('/admin/dashboard', function () {
    // ...
})->middleware('has.role:admin');
Salin selepas log masuk

Dengan kod di atas, kami boleh memastikan hanya pengguna yang mempunyai peranan 'admin' boleh mengakses halaman '/admin/dashboard'.

Kesimpulan:
Dengan menggunakan perisian tengah Laravel, kami boleh melaksanakan kebenaran akses dan pengurusan peranan aplikasi dengan mudah. Middleware menyediakan cara yang fleksibel dan ringkas untuk memastikan pengguna hanya boleh mengakses halaman yang mereka mempunyai kebenaran atau peranan. Saya harap pengenalan dalam artikel ini dapat membantu pembaca memahami dan menggunakan perisian tengah Laravel dengan lebih baik.

Atas ialah kandungan terperinci Perisian tengah Laravel: mengawal akses aplikasi dan pengurusan peranan. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!