>  기사  >  PHP 프레임워크  >  권한 관리를 위해 Hyperf 프레임워크를 사용하는 방법

권한 관리를 위해 Hyperf 프레임워크를 사용하는 방법

WBOY
WBOY원래의
2023-10-20 18:11:061202검색

권한 관리를 위해 Hyperf 프레임워크를 사용하는 방법

Hyperf 프레임워크를 사용하여 권한 관리하는 방법

오늘날 인터넷 시대에 권한 관리는 중요한 주제입니다. 애플리케이션을 개발할 때 때때로 사용자의 ID와 역할을 기반으로 시스템 리소스에 대한 사용자 액세스를 제어해야 할 때가 있습니다. 이와 관련하여 Hyperf 프레임워크는 강력한 도구와 방법을 제공합니다. 이 문서에서는 권한 관리를 위해 Hyperf 프레임워크를 사용하는 방법을 소개하고 특정 코드 예제를 제공합니다.

1. Hyperf 프레임워크 설치

먼저 Hyperf 프레임워크를 설치해야 합니다. 작곡가를 사용하여 설치를 완료하고 다음 명령을 실행할 수 있습니다.

$ composer create-project hyperf/hyperf-skeleton

설치가 완료된 후 프로젝트 디렉터리를 입력하고 다음 명령을 실행하여 Hyperf 서버를 시작합니다.

$ php bin/hyperf.php start

2. 권한 규칙 정의

에서 Hyperf 프레임워크에서는 주석 권한 규칙을 통해 이를 정의할 수 있습니다. 먼저 config/autoload/permissions.php 파일에 권한 규칙을 정의해야 합니다. 예:

<?php

use HyperfPermissionModelPermission;

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

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

위 코드에서는 사용자 관리와 기사 관리라는 두 가지 권한 규칙을 정의합니다.

3. 미들웨어 생성

다음으로 사용자에게 특정 경로에 대한 접근 권한이 있는지 확인하는 미들웨어를 생성해야 합니다. 미들웨어는 다음 명령을 통해 생성할 수 있습니다:

$ php bin/hyperf.php gen:middleware CheckPermission

그런 다음 app/Middleware/CheckPermissionMiddleware.php 파일을 편집하여 권한 확인 로직을 구현합니다. 예는 다음과 같습니다.

<?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表示没有权限
    }
}

위 코드에서는 요청에 권한 매개변수를 전달하여 확인할 권한을 지정합니다. 프로세스 메소드에서는 수신 권한 매개변수를 반복하고 hasPermission 메소드를 호출하여 사용자에게 권한이 있는지 확인합니다. 권한이 없으면 403 오류가 반환됩니다.

4. 권한 확인 수행

권한 확인이 필요한 경로에서는 미들웨어를 사용하여 사용자의 권한을 확인할 수 있습니다. 예를 들면 다음과 같습니다.

<?php

use AppMiddlewareCheckPermissionMiddleware;

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

위 코드에서는 middleware 메소드를 통해 사용할 미들웨어를 지정합니다. 이 예에서는 CheckPermissionMiddleware를 사용하고 사용자 관리 권한을 전달합니다.

위 단계를 통해 Hyperf 프레임워크에서 간단한 권한 관리를 구현할 수 있습니다. 권한 규칙을 정의하고, 미들웨어를 생성하고, 미들웨어를 사용하여 권한 확인을 수행함으로써 사용자의 신원과 역할에 따라 시스템 리소스에 대한 사용자의 액세스를 제어할 수 있습니다.

요약:

Hyperf 프레임워크는 권한 관리를 위한 편리한 도구와 방법을 제공합니다. 이 기사에서는 권한 규칙을 정의하고, 미들웨어를 생성하고, 권한 확인을 위해 미들웨어를 사용하는 방법을 배웠습니다. 이러한 단계를 통해 권한 관리 기능을 쉽게 구현하고 ID 및 역할을 기반으로 시스템 리소스에 대한 사용자 액세스를 제어할 수 있습니다. 권한 관리를 위해 Hyperf 프레임워크를 사용할 때 이 기사가 도움이 되기를 바랍니다.

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

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