Rumah  >  Artikel  >  rangka kerja php  >  Menggunakan teknologi kawalan kebenaran dalam ThinkPHP6

Menggunakan teknologi kawalan kebenaran dalam ThinkPHP6

WBOY
WBOYasal
2023-06-21 16:51:072173semak imbas

Teknologi kawalan kebenaran semakin penting dalam pembangunan aplikasi web moden. Ia membantu pembangun mengurus kebenaran pengguna, mengawal akses data dan melindungi keselamatan sistem. ThinkPHP6 ialah rangka kerja PHP berkuasa yang menyediakan pelbagai teknologi kawalan kebenaran Artikel ini akan memperkenalkan beberapa daripadanya.

  1. Pengesahan dan Keizinan

Dalam ThinkPHP6, pengesahan dan kebenaran ialah dua konsep yang berbeza. Pengesahan biasanya merujuk kepada mengesahkan identiti pengguna dan menentukan sama ada pengguna itu sah. Kebenaran merujuk kepada pemberian kebenaran kepada pengguna untuk mengakses sumber tertentu. ThinkPHP6 menyediakan komponen Auth untuk melaksanakan fungsi pengesahan dan kebenaran.

Komponen Auth perlu mentakrifkan perhubungan antara pengguna, peranan dan kebenaran dalam fail konfigurasi dan melaksanakan pengesahan dan kebenaran dengan memanggil kaedah kelas Auth. Langkah khusus adalah seperti berikut:

(1) Tentukan perhubungan

Tentukan perhubungan antara pengguna, peranan dan kebenaran dalam fail konfigurasi, contohnya:

'auth ' => [

'auth_on' => true, // 认证开关
'auth_type' => 1, // 认证方式,1为实时认证;2为登录认证。
'auth_group' => 'auth_group', // 用户组数据表名
'auth_group_access' => 'auth_group_access', // 用户-用户组关系表
'auth_rule' => 'auth_rule', // 权限规则表
'auth_user' => 'admin_user', // 用户信息表

],

Dalam kod di atas, suis 'auth_on' ditetapkan kepada benar untuk mendayakan fungsi pengesahan dan 'auth_type' ditetapkan kepada 1 untuk digunakan pengesahan masa nyata. Seterusnya, nama empat jadual ditakrifkan, iaitu kumpulan pengguna, hubungan kumpulan pengguna-pengguna, peraturan kebenaran, dan maklumat pengguna.

(2) Mengesahkan pengguna

Gunakan kaedah semak kelas Auth untuk pengesahan pengguna. Contohnya:

gunakan think acadeAuth;

// Pengguna pengesahan
jika (Auth::check($username, $password)) {

// 认证通过

} else {

// 认证失败

}

Dalam kod di atas, $username dan $password ialah nama pengguna dan kata laluan yang dimasukkan oleh pengguna masing-masing. Kaedah Auth::check mengembalikan hasil pengesahan Jika pengesahan lulus, ia mengembalikan benar, jika tidak ia mengembalikan palsu.

(3) Akses yang dibenarkan

Sebelum akses yang dibenarkan, peranan dan kebenaran pengguna yang sedang log masuk perlu disimpan dalam Sesi. Contohnya:

gunakan think acadeSession;
gunakan think acadeRequest;
gunakan think acadeAuth;

// Simpan peranan dan kebenaran pengguna semasa
$user = Auth: :user ();
$groups = Auth::getGroups($user['id']);
$rules = Auth::getRules($user['id']);
Sesi: :set ('user_groups', $groups);
Session::set('user_rules', $rules);

Seterusnya, gunakan kaedah semak kelas Auth dalam Pengawal untuk menentukan sama ada pengguna mempunyai hak akses. Contohnya:

gunakan think acadeSession;
gunakan think acadeRequest;
gunakan think acadeAuth;

// Tentukan kebenaran pengguna
$user = Session::get(' pengguna ');
$groups = Session::get('user_groups');
$rules = Session::get('user_rules');
if (Auth::check(Request::path ( ), $groups, $rules)) {

// 用户有访问权限

} else {

// 用户无访问权限

}

Dalam kod di atas, Request::path() memperoleh permintaan semasa Alamat URL; $groups dan $rules ialah peranan dan kebenaran pengguna semasa masing-masing. Kaedah Auth::check menentukan sama ada pengguna mempunyai hak akses Jika ya, ia mengembalikan benar, jika tidak ia mengembalikan palsu.

  1. RBAC

RBAC (Role-Based Access Control) ialah teknologi kawalan akses berasaskan peranan yang memisahkan peranan pengguna daripada kebenaran dan pengguna mendapatkan kebenaran melalui peranan . ThinkPHP6 menyediakan modul sambungan RBAC, yang boleh melaksanakan kawalan akses berasaskan peranan dengan mudah.

(1) Pasang modul sambungan RBAC

Sangat mudah untuk memasang modul sambungan RBAC dalam ThinkPHP6 Anda hanya perlu menjalankan arahan berikut dalam baris arahan:

komposer memerlukan jiaming/admin -rbac

(2) Cipta jadual pangkalan data

Jalankan arahan berikut untuk mencipta jadual pangkalan data yang diperlukan:

php think migrate:run - -seed /vendor/jiaming/admin -rbac/database/migrations

(3) Menggunakan RBAC

Menggunakan modul sambungan RBAC memerlukan penentuan peranan, kebenaran, sumber dan peraturan. Dalam ThinkPHP6, item konfigurasi berkaitan RBAC perlu ditakrifkan dalam config/auth.php, contohnya:

'auth' => [

// ...
'auth_type' => 'rbac',
'rbac' => [
    'role_table' => 'admin_role',
    'user_table' => 'admin_user',
    'access_table' => 'admin_access',
    'node_table' => 'admin_node',
    'role_user_table' => 'admin_role_user',
],

],

dalam In kod di atas, 'auth_type' ditetapkan kepada 'rbac', yang bermaksud kaedah kebenaran RBAC digunakan dan nama jadual data yang berkaitan ditentukan.

Seterusnya, anda perlu memulakan RBAC dalam Pengawal, contohnya:

gunakan jiamingAdminRbacRbac;

Indeks kelas memanjangkan Pengawal
{

public function index()
{
    // 初始化RBAC
    Rbac::init();
    // ...
}

}

Dalam kod di atas, kaedah Rbac::init dipanggil untuk memulakan RBAC.

Akhir sekali, lakukan kawalan akses dalam Pengawal, contohnya:

gunakan jiamingAdminRbacRbac;

Indeks kelas memanjangkan Pengawal
{

public function index()
{
    // 初始化RBAC
    Rbac::init();
    // 判断用户权限
    if (!Rbac::can('index/index/index')) {
        $this->error('您没有访问权限!');
    }
    // ...
}

}

Dalam kod di atas, kaedah Rbac::can menentukan sama ada pengguna semasa mempunyai kebenaran untuk mengakses indeks/indeks/indeks.

Ringkasan

Teknologi kawalan kebenaran merupakan aspek penting dalam pembangunan aplikasi web moden dan boleh melindungi keselamatan sistem dan data pengguna. Dalam ThinkPHP6, kaedah kawalan kebenaran yang berbeza boleh digunakan, termasuk pengesahan dan kebenaran, RBAC, dsb. Memilih kaedah kawalan kebenaran yang sesuai berdasarkan keperluan aplikasi dan kos pembangunan boleh meningkatkan kecekapan pembangunan dan keselamatan aplikasi.

Atas ialah kandungan terperinci Menggunakan teknologi kawalan kebenaran dalam ThinkPHP6. 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