2017-03-27 96 views
1

我使用Symfony3用於與一個Web應用程序的用戶管理,如果沒有登錄到登錄頁面。 我插在我的應用程序的登錄和跟隨我的header.html.twig登記表格。這個文件(標題)被插入到我的主文件(base.html.twig)中,這意味着它被插入到我的幾乎所有頁面中。阻止用戶重定向/ Symfony3 FosUserBndl

<div class="modal fade" id="registerModal" role="dialog"> 
     {{ render(controller('UserBundle:Registration:Register', {'request': app.request})) }} 
    </div> 

    <div class="modal fade" id="loginModal" role="dialog"> 
     {{ render(controller('UserBundle:Security:Login')) }} 
    </div> 

的問題是,當我嘗試訪問主頁http://localhost/baseurl/web/app_dev.php/我重定向到http://localhost/baseurl/web/app_dev.php/loginfos_user_security_login(在security.yml的login_path配置FosUserBundle登錄路由)。 我不知道如何配置和使用在我已overrided的情況下的FUB並插入在報頭中security_login形式作爲隨後

我security.yml:

security: 

    encoders: 
     Symfony\Component\Security\Core\User\User: plaintext 
     FOS\UserBundle\Model\UserInterface: sha512 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username_email 

    firewalls: 
     dev: 
      pattern: ^/(_(profiler|wdt)|css|images|js)/ 
      security: false 

     main: 
      pattern: ^/ 
      form_login: 
       login_path: fos_user_security_login 
       check_path: fos_user_security_check 
       provider: fos_userbundle 
       csrf_token_generator: security.csrf.token_manager 
       default_target_path:/
       failure_path:/
      logout: 
       path: /logout 
       target:/
      anonymous: true 
      remember_me: 
       secret: '%secret%' 
       lifetime: 604800 # 1 week in seconds 
       path: /

    role_hierarchy: 
     ROLE_SECRETAIRE: [ROLE_USER] 
     ROLE_ADMIN: [ROLE_SECRETAIRE] 

    access_control: 
     - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/, role: ROLE_SECRETAIRE } 

config.yml:

# FOSUserBundle Configuration 
fos_user: 
    db_driver:    orm 
    firewall_name:   main 
    user_class:    UserBundle\Entity\User 
    use_listener:   true 
    use_flash_notifications: true 
    use_authentication_listener: true 
    use_username_form_type: true 
    model_manager_name:  null # change it to the name of your entity/document manager if you don't want to use the default one. 
    from_email: 
     address:  [email protected] 
     sender_name: Gauthier 
    profile: 
     form: 
      type:    FOS\UserBundle\Form\Type\ProfileFormType 
      name:    fos_user_profile_form 
      validation_groups: [Profile, Default] 
    change_password: 
     form: 
      type:    FOS\UserBundle\Form\Type\ChangePasswordFormType 
      name:    fos_user_change_password_form 
      validation_groups: [ChangePassword, Default] 
    registration: 
     confirmation: 
      enabled: false 
      template: '@FOSUser/Registration/email.txt.twig' 
     form: 
      type:    UserBundle\Form\Type\RegistrationType 
      name:    fos_user_registration_form 
      validation_groups: [Registration, Default] 
    resetting: 
     token_ttl: 86400 
     email: 
      template: '@FOSUser/Resetting/email.txt.twig' 
     form: 
      type:    FOS\UserBundle\Form\Type\ResettingFormType 
      name:    fos_user_resetting_form 
      validation_groups: [ResetPassword, Default] 
    service: 
     mailer:     fos_user.mailer.default 
     email_canonicalizer: fos_user.util.canonicalizer.default 
     username_canonicalizer: fos_user.util.canonicalizer.default 
     token_generator:  fos_user.util.token_generator.default 
     user_manager:   fos_user.user_manager.default 

- 編輯 -

當我加入我的路線 '主頁'(http://localhost/baseurl/web/app_dev.php/)匹配的控制器die('ok');,我不重定向到/login,但我有 「OK」在白頁上打印。我不明白的地方重定向到/登錄完成

+0

您可以從security.yml上form_login配置,看到這樣的:https://github.com/FriendsOfSymfony/FOSUserBundle/issues/849。 –

+0

我不確定這是同一個問題。我的問題是,如果沒有登錄,我會重定向到/登錄,但無論如何感謝您的時間 – Gauthier

回答

2

FOSUserBundle docs

接下來,看一看,檢查防火牆部分。這裏我們已經聲明瞭名爲main的防火牆。通過指定form_login,你已經告訴的請求該防火牆,導致用戶需要對自己進行身份驗證,用戶會被重定向到一個表單,他將能夠進入他的憑據進行的任何時間Symfony框架

要允許accesss到您的主頁,你可以像這樣添加的東西:

# app/config/security.yml file 
security: 
    ... 
    access_control: 
     # allow anonymous access to the homepage: 
     - { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY } 

在這種情況下,在routing.yml文件索引操作模式必須是「/」。

希望幫助

克里斯