В настоящее время мой проект (Frontend и Backend, оба Symfony2) использует HWIOAuthBundle для аутентификации через Google и т. д.
Так как я хочу отделить фронтэнд (фронтэнд AngularJS) от бэкенда. Коммуникация будет опираться на данные JSON (так что REST в целом).
Я столкнулся с проблемой, как добиться этого с помощью HWIOAuthBundle. В документации Symfony что-то говорится о stateless: true
, но тогда HWIOAuthBundle не работает.
Кроме того: в будущем я хочу реализовать FOSUserBundle для нового пользователя (который не проходит аутентификацию через OAuth).
Мои вопросы: 1. Как я могу добиться аутентификации без сохранения состояния с помощью HWIOAuthBundle 2. Как мне достичь аутентификации без сохранения состояния в целом (HWIOAuthBundle и FOSUserBundle). В документации Symfony говорится, что аутентификация без сохранения состояния выполняется путем отправки имени пользователя/пароля в каждом запросе. Я думаю, что аутентификация с помощью токена - лучший способ (поскольку в контексте OAuth у меня нет имени пользователя/пароля).
Надеюсь, мой вопрос понятен!
# app/config/security.yml
security:
encoders:
AppBundle\Entity\User:
algorithm: sha1
encode_as_base64: false
iterations: 1
providers:
my_custom_hwi_provider:
id: amagin_user.oauth_user_provider
in_memory:
memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_USER
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
default:
anonymous: ~
http_basic: ~
stateless: false
oauth:
resource_owners:
google: "/login/check-google"
login_path: /login
use_forward: false
failure_path: /login
oauth_user_provider:
service: amagin_user.oauth_user_provider
logout:
path: /logout
target: /
access_control:
#- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/connect, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }