Rumah rangka kerja php ThinkPHP Cara menggunakan kebenaran Pengesahan ThinkPHP6

Cara menggunakan kebenaran Pengesahan ThinkPHP6

Jun 20, 2023 am 08:27 AM
thinkphp auth membenarkan

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menaik taraf win10 enterprise versi 2016 versi perkhidmatan jangka panjang kepada versi profesional Bagaimana untuk menaik taraf win10 enterprise versi 2016 versi perkhidmatan jangka panjang kepada versi profesional Jan 03, 2024 pm 11:26 PM

Apabila kami tidak lagi mahu menggunakan Edisi Perkhidmatan Jangka Panjang Win10 Enterprise 2016, kami boleh memilih untuk beralih kepada Edisi Profesional Kaedahnya juga sangat mudah. ​​Kami hanya perlu menukar beberapa kandungan dan memasang imej sistem. Cara menukar versi perkhidmatan jangka panjang win10 enterprise 2016 kepada versi profesional 1. Tekan win+R, dan kemudian masukkan "regedit" 2. Tampal laluan berikut terus dalam bar alamat di atas: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion3 , kemudian cari EditionID dan gantikan kandungan dengan "profesional" untuk mengesahkan

Bagaimana untuk menjalankan projek thinkphp Bagaimana untuk menjalankan projek thinkphp Apr 09, 2024 pm 05:33 PM

Untuk menjalankan projek ThinkPHP, anda perlu: memasang Komposer untuk mencipta projek, masukkan direktori projek dan laksanakan php bin/console serve;

Terdapat beberapa versi thinkphp Terdapat beberapa versi thinkphp Apr 09, 2024 pm 06:09 PM

ThinkPHP mempunyai berbilang versi yang direka untuk versi PHP yang berbeza. Versi utama termasuk 3.2, 5.0, 5.1 dan 6.0, manakala versi kecil digunakan untuk membetulkan pepijat dan menyediakan ciri baharu. Versi stabil terkini ialah ThinkPHP 6.0.16. Apabila memilih versi, pertimbangkan versi PHP, keperluan ciri dan sokongan komuniti. Adalah disyorkan untuk menggunakan versi stabil terkini untuk prestasi dan sokongan terbaik.

Bagaimana untuk menjalankan thinkphp Bagaimana untuk menjalankan thinkphp Apr 09, 2024 pm 05:39 PM

Langkah-langkah untuk menjalankan ThinkPHP Framework secara setempat: Muat turun dan nyahzip ThinkPHP Framework ke direktori tempatan. Buat hos maya (pilihan) yang menunjuk ke direktori akar ThinkPHP. Konfigurasikan parameter sambungan pangkalan data. Mulakan pelayan web. Mulakan aplikasi ThinkPHP. Akses URL aplikasi ThinkPHP dan jalankannya.

Mana yang lebih baik, laravel atau thinkphp? Mana yang lebih baik, laravel atau thinkphp? Apr 09, 2024 pm 03:18 PM

Perbandingan prestasi rangka kerja Laravel dan ThinkPHP: ThinkPHP umumnya berprestasi lebih baik daripada Laravel, memfokuskan pada pengoptimuman dan caching. Laravel berfungsi dengan baik, tetapi untuk aplikasi yang kompleks, ThinkPHP mungkin lebih sesuai.

Bagaimana untuk memasang thinkphp Bagaimana untuk memasang thinkphp Apr 09, 2024 pm 05:42 PM

Langkah pemasangan ThinkPHP: Sediakan persekitaran PHP, Komposer dan MySQL. Buat projek menggunakan Komposer. Pasang rangka kerja dan kebergantungan ThinkPHP. Konfigurasikan sambungan pangkalan data. Hasilkan kod aplikasi. Lancarkan aplikasi dan lawati http://localhost:8000.

Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk melaksanakan tugas tak segerak Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk melaksanakan tugas tak segerak Nov 22, 2023 pm 12:01 PM

"Cadangan Pembangunan: Cara Menggunakan Rangka Kerja ThinkPHP untuk Melaksanakan Tugas Asynchronous" Dengan perkembangan pesat teknologi Internet, aplikasi Web mempunyai keperluan yang semakin tinggi untuk mengendalikan sejumlah besar permintaan serentak dan logik perniagaan yang kompleks. Untuk meningkatkan prestasi sistem dan pengalaman pengguna, pembangun sering mempertimbangkan untuk menggunakan tugas tak segerak untuk melaksanakan beberapa operasi yang memakan masa, seperti menghantar e-mel, memproses muat naik fail, menjana laporan, dsb. Dalam bidang PHP, rangka kerja ThinkPHP, sebagai rangka kerja pembangunan yang popular, menyediakan beberapa cara mudah untuk melaksanakan tugas tak segerak.

Bagaimanakah prestasi thinkphp? Bagaimanakah prestasi thinkphp? Apr 09, 2024 pm 05:24 PM

ThinkPHP ialah rangka kerja PHP berprestasi tinggi dengan kelebihan seperti mekanisme caching, pengoptimuman kod, pemprosesan selari dan pengoptimuman pangkalan data. Ujian prestasi rasmi menunjukkan bahawa ia boleh mengendalikan lebih daripada 10,000 permintaan sesaat, dan digunakan secara meluas dalam tapak web dan sistem perusahaan berskala besar seperti JD.com dan Ctrip dalam aplikasi praktikal.

See all articles