>PHP 프레임워크 >Swoole >권한 인증을 위해 Hyperf 프레임워크를 사용하는 방법

권한 인증을 위해 Hyperf 프레임워크를 사용하는 방법

WBOY
WBOY원래의
2023-10-20 19:31:46721검색

권한 인증을 위해 Hyperf 프레임워크를 사용하는 방법

권한 인증을 위해 Hyperf 프레임워크를 사용하는 방법

소개:
웹 애플리케이션에서 권한 인증은 매우 중요한 기능입니다. 권한 인증을 통해 특정 사용자가 특정 리소스 및 기능에만 액세스하도록 제한하고, 승인되지 않은 사용자가 중요한 데이터에 액세스하지 못하도록 보호할 수 있습니다. 이 문서에서는 권한 인증을 위해 Hyperf 프레임워크를 사용하는 방법을 소개하고 특정 코드 예제를 제공합니다.

1. 권한 테이블 및 역할 테이블 구성
권한 인증을 위해 Hyperf 프레임워크를 사용하기 전에 먼저 권한 테이블과 역할 테이블을 구성해야 합니다. 프로젝트에서 .env 파일을 열고 다음 구성을 추가합니다.

# 权限表
PERMISSION_TABLE=admin_permissions

# 角色表
ROLE_TABLE=admin_roles

그런 다음 데이터베이스에 해당 테이블을 만듭니다.

2. 권한 미들웨어 정의
Hyperf 프레임워크는 요청 처리 전후에 일부 작업을 수행할 수 있는 미들웨어 메커니즘을 제공합니다. 권한 인증을 위해 미들웨어를 사용할 수 있습니다. 먼저 다음 코드를 사용하여 app/Middleware 디렉토리에 AuthMiddleware.php라는 새 파일을 만듭니다.

<?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. 미들웨어 등록
config/autoload/middlewares.php 파일을 열고 다음 구성을 추가합니다.

<?php

declare(strict_types=1);

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

4. 다음을 사용합니다. 미들웨어
라우팅 구성에서 권한 인증을 위해 미들웨어를 사용할 수 있습니다. 예:

<?php

declare(strict_types=1);

use HyperfHttpServerRouterRouter;

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

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

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

요약:
권한 인증을 위해 Hyperf 프레임워크를 사용하는 것은 매우 간단합니다. AuthMiddleware 미들웨어를 정의한 다음 이를 라우팅 구성에 사용하기만 하면 됩니다. 요청이 미들웨어에 도달하면 맞춤형 권한 인증 로직이 실행됩니다. 권한 확인에 실패하면 해당 오류 메시지가 반환될 수 있습니다. 이런 방식으로 권한 제어 기능을 쉽게 구현할 수 있습니다.

참조 링크:

  1. Hyperf 공식 문서: https://hyperf.wiki/2.2/#/zh-cn/middleware/middleware?id=미들웨어 등록

위 내용은 권한 인증을 위해 Hyperf 프레임워크를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.