簡體   English   中英

成功登錄后,Symfony會重定向到登錄…有時

[英]Symfony redirects to login after successful login…sometimes

我遇到了Symfony 3.3.9的問題。 有時,並非總是如此,當用戶使用正確的用戶名和密碼登錄時,它會像應有的那樣重定向到主頁,然后又返回登錄頁面。

我知道用戶已登錄,因為我可以用樹枝從登錄頁面獲取用戶的信息。

真的很奇怪,因為這不會一直發生。 似乎是隨機的,很難復制。

我一直在研究這個問題好幾天了,無法弄清楚為什么會這樣。 尋找一些建議。

謝謝。

Edit-1添加的代碼

編輯2

當我重定向到登錄名時,我嘗試鍵入主頁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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM