Rumah > rangka kerja php > ThinkPHP > Cara menggunakan kebenaran Pengesahan ThinkPHP6

Cara menggunakan kebenaran Pengesahan ThinkPHP6

PHPz
Lepaskan: 2023-06-20 08:27:13
asal
1476 orang telah melayarinya

ThinkPHP6 ialah rangka kerja PHP yang sangat baik yang memberikan kami banyak alatan dan fungsi yang cekap. Antaranya, kebenaran Pengesahan ialah fungsi yang sangat berkuasa yang boleh membantu kami mengurus kebenaran dalam aplikasi. Artikel ini akan memperkenalkan cara menggunakan kebenaran Pengesahan ThinkPHP6.

  1. Pasang komponen Auth

Mula-mula, kita perlu memasang komponen Auth. Jalankan arahan berikut dalam terminal:

composer require topthink/think-auth
Salin selepas log masuk

Selepas pemasangan selesai, kita perlu menambah pembekal perkhidmatan Auth dalam fail konfigurasi:

// config/app.php

return [
    // ...
    'providers' => [
        // ...
        thinkuthServiceProvider::class,
    ],
];
Salin selepas log masuk

Kemudian, kita perlu melaksanakan arahan berikut untuk menjana fail konfigurasi Auth:

php think auth:config
Salin selepas log masuk
  1. Configure Auth component

Auth component boleh dikonfigurasikan untuk mencapai keperluan pengurusan kebenaran yang berbeza Berikut ialah konfigurasi asas:

// config/auth.php

return [
    'auth_on' => true,
    'auth_type' => 1,
    'auth_group' => 'auth_group',
    'auth_group_access' => 'auth_group_access',
    'auth_rule' => 'auth_rule',
    'auth_user' => 'user',
];
Salin selepas log masuk
  • auth_on: sama ada untuk menghidupkan pengesahan kebenaran, benar untuk menghidupkan, palsu untuk mematikan
  • auth_type: kaedah pengesahan, 1 ialah pengesahan masa nyata (iaitu pihak berkuasa; diperoleh semula setiap kali kuasa disahkan), 2 ialah pengesahan log masuk (iaitu, log masuk pengguna Sahkan kebenaran kemudian); nama jadual yang berkaitan;
  • auth_rule: jadual peraturan kebenaran;
  • Buat peraturan kebenaran
  • Sebelum menggunakan kebenaran Pengesahan, kita perlu membuat beberapa peraturan kebenaran terlebih dahulu. Peraturan kebenaran boleh mengawal akses pengguna kepada sumber yang berbeza. Kita perlu mencipta jadual auth_rule dalam pangkalan data, dan kemudian mencipta peraturan kebenaran dengan menambah rekod.
// appmodelAuthRule.php

namespace appmodel;

use thinkModel;

class AuthRule extends Model
{
    //
}
Salin selepas log masuk
    Seterusnya, kita perlu mencipta jadual auth_rule dalam pangkalan data:
  1. CREATE TABLE `auth_rule` (
        `id` INT NOT NULL AUTO_INCREMENT,
        `name` VARCHAR(100) NOT NULL COMMENT '规则',
        `title` VARCHAR(100) NOT NULL COMMENT '规则名称',
        `type` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '规则类型',
        `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '状态',
        `condition` TEXT COMMENT '规则表达式',
        PRIMARY KEY (`id`)
    ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='权限规则表';
    Salin selepas log masuk
  2. Kemudian, kita boleh menambah beberapa peraturan kebenaran dengan:
use appmodelAuthRule;

$rule = new AuthRule;
$rule->name = 'admin/user/index';
$rule->title = '管理用户';
$rule->save();

$rule = new AuthRule;
$rule->name = 'admin/user/add';
$rule->title = '添加用户';
$rule->save();

$rule = new AuthRule;
$rule->name = 'admin/user/edit';
$rule->title = '编辑用户';
$rule->save();

$rule = new AuthRule;
$rule->name = 'admin/user/del';
$rule->title = '删除用户';
$rule->save();
Salin selepas log masuk

Cipta Kumpulan pengguna

Selain peraturan kebenaran, kami juga perlu membuat kumpulan pengguna. Kumpulan pengguna ialah koleksi pengguna yang mempunyai hak akses yang sama. Kita perlu mencipta jadual auth_group dalam pangkalan data, dan kemudian mencipta kumpulan pengguna dengan menambah rekod.

// appmodelAuthGroup.php

namespace appmodel;

use thinkModel;

class AuthGroup extends Model
{
    //
}
Salin selepas log masuk
    Seterusnya, kita perlu mencipta jadual auth_group dalam pangkalan data:
  1. CREATE TABLE `auth_group` (
        `id` INT NOT NULL AUTO_INCREMENT,
        `title` VARCHAR(100) NOT NULL COMMENT '组名',
        `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT '状态',
        PRIMARY KEY (`id`)
    ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户组表';
    Salin selepas log masuk
  2. Kemudian, kita boleh menambah beberapa kumpulan pengguna dengan:
use appmodelAuthGroup;

$group = new AuthGroup;
$group->title = '管理员';
$group->save();

$group = new AuthGroup;
$group->title = '普通用户';
$group->save();
Salin selepas log masuk

Buat Kumpulan Pengguna Butiran

Kini, kami telah mencipta beberapa peraturan kebenaran dan kumpulan pengguna. Seterusnya, kita perlu menetapkan peraturan kepada kumpulan pengguna. Kita perlu mencipta jadual auth_group_access dalam pangkalan data, dan kemudian mencipta butiran kumpulan pengguna dengan menambah rekod.

// appmodelAuthGroupAccess.php

namespace appmodel;

use thinkModel;

class AuthGroupAccess extends Model
{
    //
}
Salin selepas log masuk
    Seterusnya, kita perlu mencipta jadual auth_group_access dalam pangkalan data:
  1. CREATE TABLE `auth_group_access` (
        `uid` INT NOT NULL COMMENT '用户id',
        `group_id` INT NOT NULL COMMENT '用户组id',
        UNIQUE KEY `uid_group_id` (`uid`, `group_id`),
        KEY `uid` (`uid`),
        KEY `group_id` (`group_id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='用户组明细表';
    Salin selepas log masuk
  2. Kami kemudiannya boleh menetapkan peraturan kebenaran kepada kumpulan pengguna melalui:
use appmodelAuthGroupAccess;

$access = new AuthGroupAccess;
$access->uid = 1;
$access->group_id = 1;
$access->save();

$access = new AuthGroupAccess;
$access->uid = 2;
$access->group_id = 2;
$access->save();

$access = new AuthGroupAccess;
$access->uid = 3;
$access->group_id = 2;
$access->save();
Salin selepas log masuk

Keizinan menggunakan Auth

Sekarang, kami telah mencipta beberapa peraturan kebenaran dan kumpulan pengguna dan memberikan peraturan kepada kumpulan pengguna. Seterusnya, kami boleh menggunakan kebenaran Pengesahan untuk mengesahkan sama ada pengguna mempunyai hak akses.

// 授权验证
use thinkacadeSession;
use thinkacadeRequest;
use thinkacadeConfig;
use thinkacadeDb;
use thinkuthAuth;

class BaseController extends Controller
{
    protected function initialize()
    {
        parent::initialize();

        // 如果用户未登录,则跳转到登录页面
        if (!Session::has('user')) {
            $this->redirect('/login');
        }

        $uid = Session::get('user.id');

        // 如果是超级管理员,则直接通过权限验证
        if ($uid == Config::get('admin_id')) {
            return true;
        }

        $auth = new Auth;
        $route = strtolower(Request::controller() . '/' . Request::action());
        if (!$auth->check($route, $uid)) {
            $this->error('无权限');
        }
    }
}
Salin selepas log masuk
    Pertama, kita perlu mendapatkan maklumat log masuk pengguna daripada Sesi. Jika pengguna tidak log masuk, lompat ke halaman log masuk.
  1. Kemudian, kami mendapat uid pengguna semasa. Jika pengguna semasa ialah pentadbir super, pengesahan kebenaran akan dihantar terus.

Jika tidak, kami mencipta tika Auth dan mendapatkan laluan untuk permintaan semasa. Kemudian, kami menggunakan kaedah semakan Auth untuk mengesahkan sama ada pengguna semasa mempunyai hak akses. Jika tidak, ralat tiada kebenaran dilemparkan.

Ringkasan

Dalam artikel ini, kami mempelajari cara menggunakan kebenaran ThinkPHP6's Auth. Kami menggunakan komponen Auth untuk melaksanakan pengurusan kebenaran dan mencipta beberapa peraturan kebenaran dan kumpulan pengguna. Akhir sekali, kami menggunakan kebenaran Pengesahan untuk mengesahkan bahawa pengguna mempunyai hak akses. Jika anda memerlukan fungsi pengurusan kebenaran yang lebih maju, anda boleh mencapainya dengan melanjutkan komponen Auth.

Atas ialah kandungan terperinci Cara menggunakan kebenaran Pengesahan ThinkPHP6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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