aescarcha/oauth

一个用于封装 FOSOauthServerBundle 并为 API 提供OAuth的组件

安装: 38

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

v1.0 2016-09-14 16:38 UTC

This package is auto-updated.

Last update: 2024-09-19 10:57:17 UTC


README

步骤 1:下载组件

打开命令行,进入您的项目目录,并执行以下命令以下载此组件的最新稳定版本

$ composer require aescarcha/oauth "~1"

此命令需要您已全局安装 Composer,具体请参考 Composer 文档中的安装章节

步骤 2:安装需求

composer require friendsofsymfony/rest-bundle
composer require jms/serializer-bundle
composer require nelmio/api-doc-bundle
composer require friendsofsymfony/user-bundle
composer require aescarcha/user-bundle dev-master
composer require friendsofsymfony/oauth-server-bundle

步骤 3:启用组件

然后,通过将其添加到项目 app/AppKernel.php 文件中注册的组件列表中来启用组件

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new FOS\RestBundle\FOSRestBundle(),
            new JMS\SerializerBundle\JMSSerializerBundle(),
            new Nelmio\ApiDocBundle\NelmioApiDocBundle(),
            new FOS\UserBundle\FOSUserBundle(),
            new Aescarcha\UserBundle\AescarchaUserBundle(),
            new Aescarcha\OauthServerBundle\AescarchaOauthServerBundle(),
        );

        // ...
    }

    // ...
}

步骤 4:配置组件

app/config/routing.yml 中启用路由

NelmioApiDocBundle:
    resource: "@NelmioApiDocBundle/Resources/config/routing.yml"
    prefix:   /api/doc

aescarcha_oauth_server:
    resource: "@AescarchaOauthServerBundle/Resources/config/routing.yml"
    prefix:   /

app/config/config.yml 中配置组件

# app/config/config.yml
nelmio_api_doc: ~

fos_rest:
    routing_loader:
        default_format: json                            # All responses should be JSON formated
        include_format: false                           # We do not include format in request, so that all responses
                                                        # will eventually be JSON formated

body_listener:                                          # Decode full json bodies
    decoders:
         son: fos_rest.decoder.json


fos_user:
    db_driver: orm
    firewall_name: oauth_token                          # Seems to be used when registering user/reseting password,
                                                        # but since there is no "login", as so it seems to be useless in
                                                        # our particular context, but still required by "FOSUserBundle"
    user_class: Aescarcha\UserBundle\Entity\User

fos_oauth_server:
    db_driver:           orm
    client_class:        Aescarcha\OauthServerBundle\Entity\Client
    access_token_class:  Aescarcha\OauthServerBundle\Entity\AccessToken
    refresh_token_class: Aescarcha\OauthServerBundle\Entity\RefreshToken
    auth_code_class:     Aescarcha\OauthServerBundle\Entity\AuthCode
    service:
        user_provider: fos_user.user_manager             # This property will be used when valid credentials are given to load the user upon access token creation

将其添加到 app/config/security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username        # fos_user.user_provider.username_email does not seem to work (OAuth-spec related ("username + password") ?)
    firewalls:
        oauth_token:                                   # Everyone can access the access token URL.
            pattern: ^/oauth/v2/token
            security: false

测试

为了测试此组件,您需要下载并启用以下组件

"doctrine/doctrine-fixtures-bundle": "^2.3",
"liip/functional-test-bundle": "^1.6"

$bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
$bundles[] = new Liip\FunctionalTestBundle\LiipFunctionalTestBundle();

并且我建议您在 config_test.yml 中使用此配置以使用 sqlite

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver:   pdo_sqlite
                path:     %kernel.cache_dir%/test.db

liip_functional_test:
    cache_sqlite_db: true