![](/img/trans.png)
[英]Symfony 2.6 Security Login redirects back to login page on successful login
[英]Symfony redirects to login after successful login…sometimes
我遇到了Symfony 3.3.9的問題。 有時,並非總是如此,當用戶使用正確的用戶名和密碼登錄時,它會像應有的那樣重定向到主頁,然后又返回登錄頁面。
我知道用戶已登錄,因為我可以用樹枝從登錄頁面獲取用戶的信息。
真的很奇怪,因為這不會一直發生。 似乎是隨機的,很難復制。
我一直在研究這個問題好幾天了,無法弄清楚為什么會這樣。 尋找一些建議。
謝謝。
當我重定向到登錄名時,我嘗試鍵入主頁URL以手動轉到那里。 即使我已經登錄,它也不起作用。但是,如果我等了一分鍾左右,就可以了。
我正在使用FOS用戶捆綁包
這是我的config.yml
# fos bundle
fos_user:
db_driver: orm
firewall_name: main
user_class: Acme\Entity\User
這是我的security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_EMPLOYEE: [ROLE_USER]
ROLE_MANAGER: [ROLE_EMPLOYEE]
ROLE_ADMIN: [ROLE_MANAGER]
ROLE_SUPER_ADMIN: [ROLE_ADMIN,ROLE_ALLOWED_TO_SWITCH]
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
always_use_default_target_path: true
default_target_path: after_login
# if you are using Symfony < 2.8, use the following config instead:
# csrf_provider: form.csrf_provider
logout: true
anonymous: true
switch_user: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/administration/roe, role: ROLE_ADMIN }
- { path: ^/administration/generateaccessemployees, role: ROLE_ADMIN }
- { path: ^/administration/location, role: ROLE_ADMIN }
- { path: ^/administration/payroll/closepp, role: ROLE_ADMIN }
- { path: ^/administration/t4, role: ROLE_ADMIN }
- { path: ^/administration/eft, role: ROLE_ADMIN }
- { path: ^/administration/stubmessage, role: ROLE_ADMIN }
- { path: ^/administration/payroll_reminder, role: ROLE_ADMIN }
- { path: ^/administration, role: ROLE_MANAGER }
- { path: ^/admin/exit_impersonation, role: ROLE_PREVIOUS_ADMIN }
- { path: ^/admin, role: ROLE_SUPER_ADMIN }
在我的login_content.html.twig中,我可以看到:
{{ app.user.username }}
絕對需要查看一些代碼,更具體地講,無論登錄時運行什么功能,幫助您找到問題的根源。
編輯:在security.yml中,您可以指定一個login_path,例如:
my_firewall:
pattern: ^/(secured_area)/
provider: my_provider
anonymous: ~
form_login:
login_path: my_login_path
default_target_path: /dashboard
並且在routing.yml中,您可以將路線映射為:
my_login_path:
pattern: /my/relative/url/for/login
defaults: { _controller: MySecurityBundle:Security:login }
那么您可以在特定情況下使用普通路線:
return $this->forward($this->generateUrl('my_login_path'));
我建議這樣做的唯一原因是,登錄后的默認路由給您造成了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.