composer require dimkinthepro/jwt-auth-bundle
# config/bundles.php
return [
#...
Dimkinthepro\JwtAuth\DimkintheproJwtAuthBundle::class => ['all' => true],
];
# config/packages/dimkinthepro_jwt_auth.yaml
dimkinthepro_jwt_auth:
public_key_path: '%kernel.project_dir%/var/dimkinthepro/jwt-auth-bundle/public.pem'
private_key_path: '%kernel.project_dir%/var/dimkinthepro/jwt-auth-bundle/private.pem'
passphrase: 'SomeRandomPassPhrase'
token_ttl: 36000 # 10 hour
algorithm: 'RS512'
refresh_token_ttl: 2592000 # 1 month
refresh_token_length: 128 # max=255
# config/packages/security.yaml
security:
#...
main:
lazy: true
auth_jwt: ~
pattern: ^/api/
stateless: true
provider: your_app_user_provider
json_login:
check_path: /api/user/#
username_path: email
success_handler: Dimkinthepro\JwtAuth\Infrastructure\Security\SuccessAuthenticationHandler
failure_handler: Dimkinthepro\JwtAuth\Infrastructure\Security\FailAuthenticationHandler
# config/packages/doctrine.yaml
doctrine:
#...
orm:
#...
mappings:
#...
DimkintheproJwtAuthBundle:
is_bundle: true
type: xml
prefix: Dimkinthepro\JwtAuth\Domain\Entity
# config/routes.yaml
api_login:
path: /api/#
methods: [POST]
api_token_refresh:
path: /api/token-refresh
controller: Dimkinthepro\JwtAuth\Infrastructure\Controller\TokenRefreshAction
methods: [POST]
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
php bin/console dimkinthepro:jwt-auth:generate-key-pair