Authentication Symfony在登录和重定向之间丢失身份验证会话
我有一个应用程序,它有一个表单登录,一直工作良好 然后,我使用添加了一个api端。现在,我在web端的登录不再有效 这是我的security.yaml文件:Authentication Symfony在登录和重定向之间丢失身份验证会话,authentication,symfony-4.2,Authentication,Symfony 4.2,我有一个应用程序,它有一个表单登录,一直工作良好 然后,我使用添加了一个api端。现在,我在web端的登录不再有效 这是我的security.yaml文件: security: # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers providers: users: entity: cla
security:
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
users:
entity:
class: 'App\Entity\User'
property: 'username'
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
guard:
authenticators:
- App\Security\LoginFormAuthenticator
form_login:
login_path: app_login
check_path: app_login
logout:
path: app_logout
target: app_user_index
secured_area:
form_login:
csrf_token_generator: security.csrf.token_manager
encoders:
App\Entity\User:
algorithm: bcrypt
cost: 12
role_hierarchy:
ROLE_ADMIN: ROLE_USER
# activate different ways to authenticate
# http_basic: true
# https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
# form_login: true
# https://symfony.com/doc/current/security/form_login_setup.html
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
# - { path: ^/delete, roles: ROLE_ADMIN }
# - { path: ^/profile, roles: ROLE_USER }
我不确定我还需要发布什么,但我想不出还有什么东西可能会改变,导致它崩溃
如果我恢复到实现API之前的某个点,登录再次正常工作
可能是什么问题?尝试比较文件前后的差异 你查过日志了吗?你有错误吗 因为这篇文章讨论了更改许多不同的文件,所以很难说。即,您发布的文件不包含文章中的任何内容,如^/api防火墙 也许在一个单独的文件夹中为文章中的行创建骨架线,然后逐个文件与项目进行比较,添加骨架材料 似乎您没有告诉主防火墙使用哪个提供商进行身份验证,所以您的api one可能会覆盖它 也就是说,您的main:form\u登录:provider:必须是用户,并且您的api可以使用fos\u用户包 只要字段名相同,两者都应该能够使用相同的提供程序 编辑: 1) 结帐交响乐 2) 决定是希望与主站点使用相同的用户,还是希望api使用不同的用户提供程序 3) 将防火墙相关部分中的form_登录指向要使用的用户提供程序 在上面,您有一个在提供者部分注册的提供者“用户”。 假设您希望主站点有单独的用户:
如果您阅读了本文,您会将“fos_userbundle”作为另一个提供者放在该部分中,并添加防火墙部分以允许oauth用于api。在“aouth\u authorize”上的“form\u login”下,有一个指向fos\u用户包的提供者。您还应该添加api路由来控制api响应的路由(模式:^/api感谢您的回复。您是否可以编辑您的答案,并举例说明如何在防火墙中设置提供商?我对Symfony 4非常陌生,这是我从头开始尝试的第一个项目。在中断代码一段时间后再次阅读您的答案后,我明白了您的意思,并回答了问题aw问题。非常感谢您的帮助。@Marcus,您似乎创建了一个未注册的帐户和一个已注册的帐户。您可以使用此页面合并帐户。这样,您就可以编辑自己的帖子,而不必排队。
security:
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
users:
entity:
class: 'App\Entity\User'
property: 'username'
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: fos_userbundle
check_path: /oauth/v2/auth_login_check
login_path: /oauth/v2/auth_login
use_referer: true
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: false
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
guard:
authenticators:
- App\Security\LoginFormAuthenticator
form_login:
provider: users
login_path: app_login
check_path: app_login
logout:
path: app_logout
target: app_user_index
secured_area:
form_login:
csrf_token_generator: security.csrf.token_manager
encoders:
App\Entity\User:
algorithm: bcrypt
cost: 12
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
# activate different ways to authenticate
# http_basic: true
# https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
# form_login: true
# https://symfony.com/doc/current/security/form_login_setup.html
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
# - { path: ^/delete, roles: ROLE_ADMIN }
# - { path: ^/profile, roles: ROLE_USER }
- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }
security:
# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
users:
entity:
class: 'App\Entity\User'
property: 'username'
firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
oauth_authorize:
pattern: ^/oauth/v2/auth
form_login:
provider: users
check_path: /oauth/v2/auth_login_check
login_path: /oauth/v2/auth_login
use_referer: true
api:
pattern: ^/api
fos_oauth: true
stateless: true
anonymous: false
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
guard:
authenticators:
- App\Security\LoginFormAuthenticator
form_login:
provider: users
login_path: app_login
check_path: app_login
logout:
path: app_logout
target: app_user_index
secured_area:
form_login:
csrf_token_generator: security.csrf.token_manager
encoders:
App\Entity\User:
algorithm: bcrypt
cost: 12
role_hierarchy:
ROLE_ADMIN: ROLE_USER
# activate different ways to authenticate
# http_basic: true
# https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
# form_login: true
# https://symfony.com/doc/current/security/form_login_setup.html
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
# - { path: ^/delete, roles: ROLE_ADMIN }
# - { path: ^/profile, roles: ROLE_USER }
- { path: ^/api, roles: [ IS_AUTHENTICATED_FULLY ] }