Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan rangka kerja Hyperf untuk pengurusan kebenaran

Cara menggunakan rangka kerja Hyperf untuk pengurusan kebenaran

WBOY
WBOYasal
2023-10-20 18:11:061257semak imbas

Cara menggunakan rangka kerja Hyperf untuk pengurusan kebenaran

Cara menggunakan rangka kerja Hyperf untuk pengurusan kebenaran

Dalam era Internet hari ini, pengurusan kebenaran adalah topik penting. Apabila kami membangunkan aplikasi, kadangkala kami perlu mengawal akses pengguna kepada sumber sistem berdasarkan identiti dan peranan mereka. Dalam hal ini, rangka kerja Hyperf memberikan kita alat dan kaedah yang berkuasa. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk pengurusan kebenaran dan memberikan contoh kod khusus.

1. Pasang rangka kerja Hyperf

Pertama, kita perlu memasang rangka kerja Hyperf. Anda boleh menggunakan komposer untuk melengkapkan pemasangan dan menjalankan arahan berikut:

$ composer create-project hyperf/hyperf-skeleton

Selepas pemasangan selesai, masukkan direktori projek dan jalankan arahan berikut untuk memulakan pelayan Hyperf:

$ php bin/hyperf.php start

2. Tentukan peraturan kebenaran

Dalam Rangka kerja Hyperf, kita boleh mentakrifkannya melalui peraturan Kebenaran anotasi. Pertama, kita perlu mentakrifkan peraturan kebenaran dalam fail config/autoload/permissions.php, contohnya:

<?php

use HyperfPermissionModelPermission;

Permission::create([
    'name' => 'user-manage',
    'display_name' => '用户管理',
]);

Permission::create([
    'name' => 'article-manage',
    'display_name' => '文章管理',
]);

Dalam kod di atas, kami mentakrifkan dua peraturan kebenaran, iaitu pengurusan pengguna dan pengurusan artikel.

3. Cipta middleware

Seterusnya, kita perlu mencipta middleware untuk menyemak sama ada pengguna mempunyai kebenaran untuk mengakses laluan tertentu. Middleware boleh dibuat melalui arahan berikut:

$ php bin/hyperf.php gen:middleware CheckPermission

Kemudian, edit fail app/Middleware/CheckPermissionMiddleware.php untuk melaksanakan logik semakan kebenaran. Berikut ialah contoh:

<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfHttpServerContractResponseInterface as HttpResponse;
use HyperfUtilsApplicationContext;
use PsrContainerContainerInterface;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageServerRequestInterface;
use PsrHttpServerMiddlewareInterface;
use PsrHttpServerRequestHandlerInterface;

class CheckPermissionMiddleware implements MiddlewareInterface
{
    /**
     * @var HttpResponse
     */
    protected $response;

    public function __construct(ContainerInterface $container)
    {
        $this->response = ApplicationContext::getContainer()->get(HttpResponse::class);
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        // 在这里实现权限检查逻辑
        $permissions = $request->getAttribute('permissions', []);

        foreach ($permissions as $permission) {
            if (! $this->hasPermission($permission)) {
                return $this->response->json([
                    'code' => 403,
                    'message' => '没有权限访问该资源',
                ]);
            }
        }

        return $handler->handle($request);
    }

    protected function hasPermission($permission)
    {
        // 在这里实现检查用户是否拥有该权限的逻辑
        // 返回true表示有权限,返回false表示没有权限
    }
}

Dalam kod di atas, kami menentukan kebenaran untuk menyemak dengan menghantar parameter kebenaran dalam permintaan. Dalam kaedah proses, kami menggelung melalui parameter kebenaran masuk dan memanggil kaedah hasPermission untuk menyemak sama ada pengguna mempunyai kebenaran. Jika tiada kebenaran, kami mengembalikan ralat 403.

4. Lakukan semakan kebenaran

Dalam laluan yang memerlukan semakan kebenaran, kami boleh menggunakan perisian tengah untuk menyemak kebenaran pengguna. Berikut ialah contoh:

<?php

use AppMiddlewareCheckPermissionMiddleware;

Router::get('/users', 'UserController@index')
    ->middleware([
        new CheckPermissionMiddleware([
            'user-manage',
        ]),
    ]);

Dalam kod di atas, kami menentukan middleware untuk digunakan melalui kaedah middleware. Dalam contoh ini, kami menggunakan CheckPermissionMiddleware dan memberikan kebenaran mengurus pengguna.

Melalui langkah di atas, kami boleh melaksanakan pengurusan kebenaran mudah dalam rangka kerja Hyperf. Dengan mentakrifkan peraturan kebenaran, mencipta perisian tengah dan menggunakan perisian tengah untuk melakukan semakan kebenaran, kami dapat mengawal akses pengguna kepada sumber sistem berdasarkan identiti dan peranan mereka.

Ringkasan:

Rangka kerja Hyperf menyediakan alat dan kaedah yang mudah untuk pengurusan kebenaran. Dalam artikel ini, kami mempelajari cara mentakrifkan peraturan kebenaran, mencipta perisian tengah dan menggunakan perisian tengah untuk semakan kebenaran. Melalui langkah ini, kami boleh melaksanakan fungsi pengurusan kebenaran dengan mudah dan mengawal akses pengguna kepada sumber sistem berdasarkan identiti dan peranan mereka. Saya harap artikel ini dapat membantu anda menggunakan rangka kerja Hyperf untuk pengurusan kebenaran.

Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk pengurusan kebenaran. 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