Я использую LexikJWTAuthenticationBundle для аутентификации в моем веб-приложении с использованием REST Webservice.
Я хочу разделить свою заявку на две части:
- публичный раздел, где каждый может видеть контент - без логина
- личный раздел, где вы должны войти, чтобы редактировать контент, пользователи
и так далее.
Идея в том, чтобы сделать это через URL:
/api #reach the public content of the website
/api/admin #reach private admin content, if not logged in -> loginpage
Я пробовал это в security.yaml:
access_control:
- { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/admin, roles: IS_AUTHENTICATED_FULLY }
Но когда я пытаюсь загрузить содержимое следующим образом:
curl -X GET <baseurl-backend>/api/content/list #generic example
Я получаю:
{code: 401, message: "JWT Token not found"}
Вот security.yaml со всей конфигурацией:
security:
encoders:
App\Entity\User:
algorithm: argon2i
providers:
app_user_provider:
entity:
class: App\Entity\User
property: email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/api/login
stateless: true
anonymous: true
json_login:
check_path: /api/login_check #path for checking
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
api:
pattern: ^/api
stateless: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
main:
anonymous: true
access_control:
- { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api/admin, roles: IS_AUTHENTICATED_FULLY }
Спасибо за помощь!