mikoweb/simple-api-key-bundle

简单API密钥

安装: 16

依赖关系: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

v0.1.1 2017-04-12 15:16 UTC

This package is auto-updated.

Last update: 2024-09-25 07:23:37 UTC


README

安装

需要composer,按照以下步骤安装

composer require mikoweb/simple-api-key-bundle

启用Bundle

将以下代码放置在AppKernel.php中以启用该Bundle

// app/AppKernel.php
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Uecode\Bundle\ApiKeyBundle\UecodeApiKeyBundle(),
            new FOS\UserBundle\FOSUserBundle(),
            new Mikoweb\Bundle\SimpleApiKeyBundle\MikowebSimpleApiKeyBundle(),
        );

        // ...
    }
}

配置

在config.yml中导入以下文件

imports:
    # ...
    - { resource: api_groups.yml }
    - { resource: api_keys.yml }

示例分组文件

mikoweb_simple_api_key:
    groups:
        api_user:
            roles:
                - ROLE_API_USER
                - ROLE_DO_SOMETHING
                - ROLE_ACCESS_TO_ARTICLES
        api_extended_user:
            roles:
                - ROLE_API_USER
                - ROLE_DO_SOMETHING
                - ROLE_ACCESS_TO_ARTICLES
                - ROLE_EXTENDED_ACCESS

示例密钥文件

mikoweb_simple_api_key:
    keys:
        normal_key: api_user
        extended_key: api_extended_user
        krwntfibN8: api_user

将以下条目添加到config.yml中

# FOSUserBundle
fos_user:
    db_driver:      orm
    firewall_name:  api
    user_class:     Mikoweb\Bundle\SimpleApiKeyBundle\Entity\User

# UecodeApiKeyBundle
uecode_api_key:
    delivery: header
    parameter_name: X-Api-Key

# SimpleApiKeyBundle
mikoweb_simple_api_key:
    user_class: Mikoweb\Bundle\SimpleApiKeyBundle\Entity\User

安全防火墙

security.yml

security:
    role_hierarchy:
        ROLE_API_USER: ROLE_USER

    providers:
        api_key:
            id: mikoweb.simple_api_key.api_key_user_provider

    firewalls:
        api:
            pattern:    ^/api/*
            api_key:    true
            stateless:  true
            provider:   api_key

    access_control:
        - { path: ^/api/, role: ROLE_API_USER }