aescarcha / oauth
一个用于封装 FOSOauthServerBundle 并为 API 提供OAuth的组件
v1.0
2016-09-14 16:38 UTC
Requires
- php: >=5.5.9
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