Rumah  >  Artikel  >  rangka kerja php  >  Cara melaksanakan penukaran kebenaran dinamik berasaskan peranan dalam Laravel

Cara melaksanakan penukaran kebenaran dinamik berasaskan peranan dalam Laravel

WBOY
WBOYasal
2023-11-04 12:58:41839semak imbas

Cara melaksanakan penukaran kebenaran dinamik berasaskan peranan dalam Laravel

Laravel ialah rangka kerja pembangunan aplikasi web yang popular berdasarkan bahasa PHP Ia mempunyai banyak ciri cemerlang yang membolehkan pengaturcara membina aplikasi web berkualiti tinggi dengan cepat. Ini termasuk penggunaan perisian tengah untuk melaksanakan fungsi penting seperti pengesahan dan kawalan kebenaran. Dalam artikel ini, kami akan meneroka cara melaksanakan penukaran kebenaran dinamik berasaskan peranan dalam Laravel, sambil memberikan contoh kod khusus.

Apakah penukaran kebenaran dinamik berasaskan peranan?

Penukaran kebenaran dinamik berdasarkan peranan ialah mod kawalan kebenaran biasa. Dalam model ini, peranan pengguna dalam sistem mewakili satu set kebenaran operasi. Selepas log masuk, pengguna akan diberikan kebenaran yang sepadan berdasarkan peranan mereka. Semasa pengguna menggunakan sistem, pentadbir sistem boleh menukar peranan pengguna di latar belakang, dengan itu menukar kebenaran pengendalian pengguna.

Laksanakan penukaran kebenaran dinamik berasaskan peranan dalam Laravel

Laravel menyediakan banyak ciri cemerlang untuk melaksanakan penukaran kebenaran dinamik berasaskan peranan. Di bawah, kami akan melaksanakan contoh mudah langkah demi langkah Melalui contoh ini, anda boleh lebih memahami cara melaksanakan penukaran kebenaran dinamik berasaskan peranan dalam Laravel.

Langkah 1: Buat Pangkalan Data dan Jadual Pengguna

Mula-mula, mari buat pangkalan data dan jadual pengguna. Jadual pengguna termasuk ID, nama pengguna, e-mel, kata laluan, ID peranan, masa penciptaan dan masa kemas kini.

Langkah 2: Tentukan model pengguna

Seterusnya, kita perlu menentukan model pengguna yang sepadan. Dalam Laravel, anda boleh menggunakan arahan Artisan untuk mencipta model:

php artisan make:model User

Kemudian, kita boleh mentakrifkan kaedah belongsTo() yang mengaitkan model peranan dalam model Pengguna yang dijana Contoh kod adalah seperti berikut:

class User extends Model
{
    public function role()
    {
        return $this->belongsTo('AppRole');
    }
}

Langkah 3 : Cipta jadual peranan dan Model peranan

Buat helaian watak dan model watak. Jadual peranan termasuk dua medan: ID dan nama peranan.

Langkah 4: Tentukan hubungan antara model peranan

Dalam model peranan, kita boleh menentukan kebenaran peranan ini. Anda boleh menggunakan kaedah belongsToMany(), yang boleh mewujudkan hubungan banyak-ke-banyak antara peranan dan kebenaran. Contoh kod adalah seperti berikut:

class Role extends Model
{
    public function permissions()
    {
        return $this->belongsToMany('AppPermission', 'permission_role');
    }
}

Langkah 5: Buat jadual kebenaran dan model kebenaran

Buat jadual kebenaran dan model kebenaran. Jadual kebenaran termasuk dua medan: ID dan nama kebenaran.

Langkah 6: Tentukan hubungan antara model kebenaran

Dalam model kebenaran, kita boleh menentukan hubungan antara peranan dan kebenaran. Anda boleh menggunakan kaedah belongsToMany(), yang boleh mewujudkan hubungan banyak-ke-banyak antara peranan dan kebenaran. Kod sampel adalah seperti berikut:

class Permission extends Model
{
    public function roles()
    {
        return $this->belongsToMany('AppRole', 'permission_role');
    }
}

Langkah 7: Tentukan Middleware

Dalam Laravel, middleware digunakan untuk mengendalikan permintaan dan respons, yang termasuk pengesahan dan kebenaran. Kami boleh menentukan perisian tengah untuk menyemak sama ada pengguna mempunyai kebenaran untuk melaksanakan operasi yang diminta. Contoh kod adalah seperti berikut:

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesAuth;

class CheckPermission
{
    public function handle($request, Closure $next,$permissions)
    {
        $sessionUser = Auth::user();

        foreach($sessionUser->role()->get() as $role)
        {
            $role_permissions = $role->permissions()->pluck('name')->toArray();
            foreach($permissions as $perm)
            {
                if (in_array($perm, $role_permissions)) {
                    return $next($request);
                } 
            }
        }
        return redirect('/login');
    }
}

Dalam kod di atas, kami mula-mula mendapatkan semula maklumat pengguna daripada sesi dan mengembalikan kebenaran peranan yang sepadan melalui peranan pengguna Pembolehubah $permissions mengandungi kebenaran yang perlu dikawal . Jika pengguna mempunyai kebenaran, pelaksanaan diteruskan. Jika tidak, ubah hala ke halaman log masuk.

Langkah 8: Gunakan middleware

Kami boleh mentakrifkan middleware CheckPermission dalam laluan untuk menyekat pengguna daripada menggunakan laluan tertentu. Contoh kod adalah seperti berikut:

Route::get('admin/dashboard',['middleware'=>['permission'],'uses'=>'AdminController@dashboard']);

Dalam pengawal, kita boleh menyemak sama ada pengguna mempunyai kebenaran untuk menggunakan laluan ini seperti berikut:

class AdminController extends Controller
{
    public function dashboard()
    {
        $this->middleware('check-permission:user-list');
        return view('admin.index');
    }
}

Selepas mengakses laluan dalam penyemak imbas, dapatkan peranan dan kebenaran pengguna semasa dalam sesi . Jika pengguna mempunyai kebenaran, pelaksanaan diteruskan.

Kesimpulan

Dalam artikel ini, kami membincangkan cara melaksanakan penukaran kebenaran dinamik berasaskan peranan dalam Laravel. Melaksanakan kawalan kebenaran melalui perisian tengah adalah cara yang sangat biasa. Semasa melaksanakan, sila pastikan sistem anda mempunyai sistem pengurusan peranan yang lengkap dan terdapat hubungan banyak-ke-banyak antara peranan dan kebenaran. Hanya dengan cara ini fungsi pengesahan dan kebenaran yang sangat berkuasa boleh dilaksanakan dalam Laravel.

Atas ialah kandungan terperinci Cara melaksanakan penukaran kebenaran dinamik berasaskan peranan dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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