Вход пользователя с использованием оператора памяти в Symfony
после установки FOSUserBundle, теперь я пытаюсь войти с пользователем /
userpass, но я все равно получаю сообщение "Плохие учетные данные". Это мой
security.yml:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
fos_userbundle:
id: fos_user.user_manager
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
logout: true
anonymous: true
#anonymous: ~
#http_basic:
# realm: "Secured Demo Area"
Любая идея?
symfony 2.0.4
Ответы
Ответ 1
Подключите своих поставщиков следующим образом:
providers:
chain_provider:
providers: [in_memory, fos_userbundle]
in_memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
fos_userbundle:
id: fos_user.user_manager
firewalls:
main:
pattern: ^/
form_login:
provider: chain_provider
logout: true
anonymous: true
switch_user: true
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
Ответ 2
В разделе брандмауэра вы используете неправильный провайдер: fos_userbundle вместо in_memory. Вы можете связать их, если хотите.
Ответ 3
В дополнение к chian of Users provider, я предлагаю вам закодировать свой пароль в своем веб-приложении, вы можете закодировать с помощью онлайн-инструментов sh1 ссылка для кодирования онлайн.
encoders:
"Symfony\Component\Security\Core\User\User":
algorithm: sha1
iterations: 1
encode_as_base64: false
"FOS\UserBundle\Model\UserInterface": sha512
providers:
chain_provider:
providers: [in_memory, fos_userbundle]
in_memory:
users:
user: { password: 45f106ef4d5161e7aa38cf6c666607f25748b6ca, roles: [ 'ROLE_USER' ] } # userpass as password
admin: { password: 74913f5cd5f61ec0bcfdb775414c2fb3d161b620, roles: [ 'ROLE_ADMIN' ] } # adminpass as password
fos_userbundle:
id: fos_user.user_manager
firewalls:
main:
pattern: ^/
form_login:
provider: chain_provider
logout: true
anonymous: true
switch_user: true
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
Ответ 4
Подключите поставщиков для Symfony 2.3 следующим образом:
providers:
in_memory:
users:
user: { password: userpass, roles: [ 'ROLE_USER' ] }
admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
fos_userbundle:
id: fos_user.user_manager
chain_provider:
chain:
providers: [in_memory, fos_userbundle]
firewalls:
main:
pattern: ^/
form_login:
provider: chain_provider
logout: true
anonymous: true
switch_user: true
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false