sensiolabs / silex-connect
此包已被放弃,不再维护。未建议替代包。
SensioLabs Connect 的 Silex 服务提供商
v2.0.1
2016-01-14 14:43 UTC
Requires
- php: >=5.3.3
- marcw/buzz-service-provider: ~1.0
- sensiolabs/connect: ~4.0
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']();