Rumah > rangka kerja php > ThinkPHP > teks badan

Menggunakan teknologi kebenaran Auth dalam ThinkPHP6

WBOY
Lepaskan: 2023-06-20 17:50:31
asal
2165 orang telah melayarinya

Dengan pembangunan aplikasi Internet yang berterusan, keselamatan aplikasi Web telah menjadi isu yang semakin penting Bagaimana untuk memastikan keselamatan program telah menjadi masalah yang dihadapi oleh semua pembangun. Teknologi kebenaran pengesahan ialah penyelesaian popular yang menyediakan kawalan akses berasaskan peranan.

Dalam artikel ini, kami akan meneroka cara menggunakan teknologi kebenaran Pengesahan dalam ThinkPHP6. Pertama, kita perlu menjelaskan prinsip kerja dan konsep teras kebenaran Pengesahan.

  1. Cara kebenaran Pengesahan berfungsi

Inti kebenaran Pengesahan ialah kawalan akses berasaskan peranan, yang terbahagi terutamanya kepada tiga langkah berikut:

1.1 Cipta peranan

Sebelum menggunakan kebenaran Pengesahan, anda perlu mencipta peranan terlebih dahulu. Peranan ialah satu set kebenaran yang mentakrifkan akses yang dimiliki pengguna.

1.2 Berikan kebenaran kepada peranan

Selepas mencipta peranan, anda perlu memberikan kebenaran yang sepadan kepada peranan itu. Kebenaran merujuk kepada kebenaran modul atau data berfungsi yang boleh diakses.

1.3 Berikan peranan kepada pengguna

Akhir sekali, peranan perlu diberikan kepada pengguna. Seorang pengguna boleh diberikan berbilang peranan, yang menentukan hak akses yang dimiliki pengguna.

Dalam aliran kerja kebenaran Pengesahan, gunakan pengawal Akses untuk melaksanakan kawalan akses. Pengawal Akses digunakan untuk menyemak sama ada pengguna mempunyai hak akses kepada URL semasa Jika pengguna mempunyai hak akses, dia boleh terus mengakses kandungan yang berkaitan.

  1. Menggunakan teknologi kebenaran Auth dalam ThinkPHP6

Sekarang kami telah memahami cara kebenaran Auth berfungsi, di bawah kami akan menerangkan secara terperinci cara menggunakan teknologi kebenaran Auth dalam ThinkPHP6. Katakan kita mempunyai dua jenis pengguna di latar belakang: pentadbir dan pengguna biasa. Pentadbir boleh mengakses semua modul kandungan, manakala pengguna biasa hanya boleh mengakses beberapa kandungan.

2.1 Pasang dan konfigurasikan pemalam Auth

Sebelum menggunakan teknologi Auth, kita perlu memasang dan mengkonfigurasi pemalam Auth terlebih dahulu. Dalam ThinkPHP6, pemalam Auth telah disepadukan ke dalam rangka kerja dan boleh digunakan dengan konfigurasi mudah.

Pertama, cipta fail konfigurasi auth.php dalam direktori konfigurasi Maklumat konfigurasi adalah seperti berikut:

return [
    // 用户认证的类名,不设置则使用核心集成认证方法
    'auth'     => AppAuth::class,
    // 不需要认证的路由,可允许所有用户访问的路由
    'no_auth'  => ['index/index'],
    // 需要认证且验证失败时跳转的地址
    'fail_url' => 'index/login',
];
Salin selepas log masuk

2.2 Cipta model Pengguna

Buat model Pengguna. Kod yang berkaitan adalah seperti berikut:

<?php
namespace appmodel;

use thinkModel;

class User extends Model {

    // 定义角色关联
    public function roles() {
        return $this->belongsToMany(Role::class, 'user_role');
    }

    // 判断用户是否有权限访问当前操作
    public function hasPermission($permission) {
        foreach ($this->roles as $role) {
            if ($role->checkPermission($permission)) {
                return true;
            }
        }

        return false;
    }
}
Salin selepas log masuk

2.3 Cipta Role model

Cipta Role model, kod yang berkaitan adalah seperti berikut:

<?php
namespace appmodel;

use thinkModel;

class Role extends Model {

    // 定义权限关联
    public function permissions() {
        return $this->belongsToMany(Permission::class, 'role_permission');
    }

    // 检查角色是否有权限访问当前操作
    public function checkPermission($permission) {
        foreach ($this->permissions as $item) {
            if ($item->name == $permission) {
                return true;
            }
        }

        return false;
    }
}
Salin selepas log masuk

2.4 Cipta model Permission

Buat model Kebenaran, kod yang berkaitan adalah seperti berikut:

<?php
namespace appmodel;

use thinkModel;

class Permission extends Model {
}
Salin selepas log masuk

2.5 Cipta jadual pangkalan data

Buat jadual pangkalan data, termasuk jadual pengguna, jadual peranan, jadual kebenaran dan dua hubungan jadual pengguna_peranan dan peranan_kebenaran.

Struktur berkaitan jadual pengguna:

FieldTypeComment
idint
usernamevarchar(20)
passwordvarchar(255)
created_atdatetime
updated_atdatetime

struktur berkaitan jadual peranan:

FieldTypeComment
idint
namevarchar(20)
created_atdatetime
updated_atdatetime

struktur berkaitan jadual kebenaran:

FieldTypeComment
idint
namevarchar(20)

jadual peranan_pengguna Struktur berkaitan:

FieldTypeComment
idint
user_idint
role_idint

struktur berkaitan jadual role_permission:

FieldTypeComment
idint
role_idint
permission_idint

2.6 Pelaksanaan kod pengawal

Yang berikut menggunakan pengawal sampel untuk menggambarkan cara melaksanakan kebenaran Pengesahan. Kod pengawal sampel adalah seperti berikut:

<?php
namespace appdmincontroller;

use appmodelUser;
use thinkController;

class Index extends Controller {

    // 后台首页
    public function index() {
        // 获取当前登录用户
        $user_id = session('user_id');
        $user = User::find($user_id);

        // 判断用户是否有权限访问当前操作
        if (!$user->hasPermission($this->request->path())) {
            $this->error('无权访问');
        }

        return view();
    }

    // 登录页面
    public function login() {
        return view();
    }

    // 处理登录请求
    public function do_login() {
        $username = $this->request->param('username');
        $password = $this->request->param('password');

        // 根据用户名查询用户
        $user = User::where('username', $username)->find();

        // 验证用户密码
        if ($user && password_verify($password, $user->password)) {
            // 记录登录状态
            session('user_id', $user->id);

            // 跳转到后台首页
            $this->redirect('index/index');
        } else {
            $this->error('登录失败');
        }
    }

    // 退出登录
    public function logout() {
        session('user_id', null);
        $this->redirect('index/login');
    }
}
Salin selepas log masuk
  1. Ringkasan

Dalam artikel ini, kami memperkenalkan prinsip kerja, konsep teras dan pelaksanaan aplikasi kebenaran Auth dalam ThinkPHP6. Menggunakan teknologi kebenaran Pengesahan secara berkesan boleh meningkatkan keselamatan aplikasi web dan menyediakan pengguna dengan perkhidmatan yang lebih selamat dan boleh dipercayai. Dalam proses pembangunan aplikasi web yang seterusnya, kita juga harus memberi perhatian kepada jaminan keselamatan dan menggunakan teknologi keselamatan sedia ada sebaik mungkin.

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