uxf/security
最新稳定版本:3.75.10
Composer 安装命令:
composer require uxf/security
包简介
README 文档
README
Install
$ composer req uxf/security
// config/packages/uxf.php
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void {
$containerConfigurator->extension('uxf_security', [
'user_class' => User::class, // required
'base_url' => 'https://uxf.cz', // required
'public_key' => '%env(AUTH_PUBLIC_KEY)%', // required
'private_key' => '%env(AUTH_PRIVATE_KEY)%', // required
// optional
'access_token_lifetime' => 'P10Y', // default 1 day
'refresh_token_lifetime' => 'P20Y', // default 1 month
'refresh_token_cookie_path' => '/', // default null (suggestion: /api/auth/refresh-token)
'cookie_name' => 'Cookie-Name', // default Authorization - used for header + cookie
'cookie_secured' => false, // default true
'cookie_http_only' => false, // default true
// OpenID Connect - optional
'oidc' => [
'apple' => [
'client_id' => 'xxx',
],
'facebook' => [
'client_id' => 'xxx',
'client_secret' => 'xxx',
],
'gitlab' => [
'client_id' => 'xxx',
'client_secret' => 'xxx',
],
'google' => [
'client_id' => 'xxx',
],
'microsoft' => [
'client_id' => 'xxx',
],
'mojeid' => [
'client_id' => 'xxx',
],
'seznam' => [
'client_id' => 'xxx',
'client_secret' => 'xxx',
],
'uxf' => [
'client_id' => 'xxx',
'client_secret' => 'xxx',
'app_name' => 'xxx',
],
],
]);
};
Symfony security config - recommended
// config/packages/security.php
return static function (ContainerConfigurator $config): void {
$config->extension('security', [
'providers' => [
'provider' => [
'entity' => [
'class' => \UXF\CMS\Entity\User::class,
'property' => 'email', // BC break in 3.68 (id -> email)
],
],
],
...
]);
}
Events
LogoutUserEvent
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
use UXF\Security\Event\LogoutUserEvent;
#[AsEventListener(LogoutUserEvent::class)]
final readonly class LogoutUserListener
{
public function __invoke(LogoutUserEvent $event): void
{
// edit response cookies/headers
...
}
}
OpenID Connect
Create new user
use Nette\Utils\Random;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use UXF\CMS\Entity\User;
use UXF\Security\Service\OIDC\NewUserEvent;
class NewUserEventSubscriber implements EventSubscriberInterface
{
public function process(NewUserEvent $event): void
{
$event->user = new User($event->oidcInfo->email, '', Random::generate());
}
/**
* @inheritDoc
*/
public static function getSubscribedEvents(): array
{
return [
NewUserEvent::class => 'process',
];
}
}
Providers & URLs
# login
https://domain.com/api/auth/oidc/<provider>/login
# login with redirect (default is /)
https://domain.com/api/auth/oidc/<provider>/login?redirect=/some-path
# login callback
https://domain.com/api/auth/oidc/<provider>/callback
统计信息
- 总下载量: 11.6k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-01-29