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

Cara menggunakan rangka kerja Hyperf untuk pengesahan kebenaran

WBOY
WBOYasal
2023-10-20 19:31:46666semak imbas

Cara menggunakan rangka kerja Hyperf untuk pengesahan kebenaran

Cara menggunakan rangka kerja Hyperf untuk pengesahan kebenaran

Pengenalan:
Dalam aplikasi Web, pengesahan kebenaran adalah sangat penting tugas ciri penting. Melalui pengesahan kebenaran, kami boleh menyekat pengguna tertentu untuk hanya mengakses sumber dan fungsi tertentu, dan melindungi data sensitif daripada diakses oleh pengguna yang tidak dibenarkan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk pengesahan kebenaran dan memberikan contoh kod khusus.

1 Konfigurasikan jadual kebenaran dan jadual peranan
Sebelum mula menggunakan rangka kerja Hyperf untuk pengesahan kebenaran, kita perlu mengkonfigurasi jadual kebenaran dan jadual peranan terlebih dahulu. Buka fail .env dalam projek, tambah konfigurasi berikut:

# 权限表
PERMISSION_TABLE=admin_permissions

# 角色表
ROLE_TABLE=admin_roles

Kemudian buat jadual yang sepadan dalam pangkalan data.

2. Tentukan perisian tengah kebenaran
Rangka kerja Hyperf menyediakan mekanisme perisian tengah yang boleh melakukan beberapa operasi sebelum dan selepas pemprosesan permintaan. Kita boleh menggunakan middleware untuk pengesahan kebenaran. Mula-mula, buat fail baharu AuthMiddleware.php dalam direktori app/Middleware Kodnya adalah seperti berikut:

<?php

declare(strict_types=1);

namespace AppMiddleware;

use HyperfHttpServerContractRequestInterface;
use HyperfHttpServerContractResponseInterface;
use HyperfHttpServerRouterDispatched;
use PsrContainerContainerInterface;
use HyperfLoggerLoggerFactory;
use HyperfCircuitBreakerAnnotationCircuitBreaker;

class AuthMiddleware
{
    private $container;

    private $logger;

    public function __construct(ContainerInterface $container, LoggerFactory $loggerFactory)
    {
        $this->container = $container;
        $this->logger = $loggerFactory->get('auth');
    }

    /**
     * @param RequestInterface $request
     * @param ResponseInterface $response
     * @param callable $next
     * @return ResponseInterface
     */
    public function process(RequestInterface $request, callable $next): ResponseInterface
    {
        // 获取当前请求的控制器和方法
        $dispatched = $this->container->get(Dispatched::class);
        $controller = $dispatched->handler->callback[0];
        $action = $dispatched->handler->callback[1];

        // 进行权限认证
        $isAuth = $this->checkPermission($controller, $action);

        if (!$isAuth) {
            // 权限不足,返回错误提示
            return $response->json(['code' => 403, 'message' => 'Permission Denied']);
        }

        // 继续执行下一个中间件
        return $next($request);
    }

    /**
     * @param $controller
     * @param $action
     * @return bool
     */
    protected function checkPermission($controller, $action): bool
    {
        // 根据控制器和方法查询需要的权限,校验用户是否拥有该权限
        // 省略代码,根据具体业务逻辑进行处理

        return true; // 此处返回true表示权限校验通过
    }
}

3 Daftar middleware
Buka fail config/autoload/middlewares.php dan. tambahkan Konfigurasi berikut:

<?php

declare(strict_types=1);

return [
    // ...
    
    'auth' => AppMiddlewareAuthMiddleware::class,
];

4. Gunakan middleware
Dalam konfigurasi penghalaan, kita boleh menggunakan middleware untuk pengesahan kebenaran. Contohnya:

<?php

declare(strict_types=1);

use HyperfHttpServerRouterRouter;

// 不需要登录的接口
Router::group([
    'middleware' => [],
], function () {
    // ...
});

// 需要登录但是不需要认证权限的接口
Router::group([
    'middleware' => [
        AppMiddlewareAuthMiddleware::class,
    ],
], function () {
    // ...
});

// 需要认证权限的接口
Router::group([
    'middleware' => [
        AppMiddlewareAuthMiddleware::class,
    ],
], function () {
    // ...
});

Ringkasan:
Sangat mudah untuk menggunakan rangka kerja Hyperf untuk pengesahan kebenaran. Kami hanya perlu mentakrifkan perisian tengah AuthMiddleware dan kemudian menggunakannya dalam konfigurasi penghalaan. Apabila permintaan mencapai perisian tengah, logik pengesahan kebenaran tersuai kami akan dilaksanakan. Jika pengesahan kebenaran gagal, mesej ralat yang sepadan boleh dikembalikan. Dengan cara ini, kami boleh melaksanakan fungsi kawalan kebenaran dengan mudah.

Pautan rujukan:

  1. Dokumentasi rasmi Hyperf: https://hyperf.wiki/2.2/#/zh-cn/middleware/middleware?id=中Pendaftaran fail

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