sensiolabs/silex-connect

此包已被放弃,不再维护。未建议替代包。

SensioLabs Connect 的 Silex 服务提供商

v2.0.1 2016-01-14 14:43 UTC

This package is auto-updated.

Last update: 2022-02-01 12:20:53 UTC


README

安装

使用 composer 安装提供商

php composer.phar require sensiolabs/silex-connect

使用方法

在您的应用程序中注册服务提供商

$app->register(new ConnectServiceProvider(), array(
    'sensiolabs_connect.app_id'     => 'YOUR_APP_ID',
    'sensiolabs_connect.app_secret' => 'YOUR_APP_SECRET',
    'sensiolabs_connect.app_scope'  => 'YOUR_APP_SCOPE',
));

然后,在您的安全配置中的任何地方使用 sensiolabs_connect 身份验证机制

$app->register(new SecurityServiceProvider(), array(
    'security.firewalls' => array(
        'default' => array(
            'pattern' => '^',
            //'anonymous' => true,
            'sensiolabs_connect' => true,
            'logout' => true,
            'users' => $app->share(function () use ($app) {
                return new ConnectInMemoryUserProvider(array(
                    '4aed4f5d-e0cb-4320-902f-885fddaa7d15' => array('ROLE_ADMIN', 'ROLE_CONNECT_USER'),
                ));
            }),
        ),
    ),
));

如果您不想持久化用户,可以使用 ConnectInMemoryUserProvider

'users' => $app->share(function () use ($app) {
    return new ConnectInMemoryUserProvider(array(
        '4aed4f5d-e0cb-4320-902f-885fddaa7d15' => array('ROLE_ADMIN'),
    ));
}),

如果用户未定义,将为您创建具有特殊 ROLE_CONNECT_USER 角色的用户。如果您想为某些用户指定特殊角色,只需将它们传递给构造函数(如 4aed4f5d-e0cb-4320-902f-885fddaa7d15)。

API 用户可以通过安全令牌访问

$user = $app['security']->getToken()->getApiUser();

您可以生成一个指向 SensioLabs Connect 登录页面的链接(将 default 替换为您的防火墙条目名称)

<a href="{{ path('sensiolabs_connect.oauth_login.default') }}">Connect</a>

您还可以指定连接后的目标 URL

<a href="{{ path('sensiolabs_connect.oauth_login.default') }}?target=XXX">Connect</a>

您还可以获取访问 API 根对象的权限

$accessToken = $app['security']->getToken()->getAccessToken();

$root = $app['sensiolabs_connect.api']->getRoot();
$user = $root->getCurrentUser();

如果您想获取当前用户的根 API,可以执行以下操作

$root = $app['sensiolabs_connect.api_root']();