使用2种登录类型配置security.yml防火墙



我的security.yml代码有时会给我带来路由错误。我认为我的代码是错误的。这是我的安全代码。yml到目前为止

firewalls:
    main_login:
        pattern:    ^/account
        anonymous: ~
        form_login:
            login_path:  /account/login
            check_path:  /account/login_check
        logout:
            path:   /account/logout
            target: /
    oauth_login:
        pattern:    ^/
        anonymous: ~
        oauth:
            resource_owners:
                facebook:      /connect/login_facebook
            login_path:        /connect/login
            use_forward:       false
            failure_path:      /connect/login
            default_target_path: /connectfb
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
    login:
        pattern:  ^/connect/login$
        security: false
access_control:
    - { path: ^/admin, roles: ROLE_ADMIN }
    - { path: ^/account, roles: ROLE_USER }

如何配置我的安全性是最好的方法。yml我需要main_login作为主要登录选项,oauth_login为次要登录选项我尝试在main_login上使用pattern: ^/,在oauth_login中使用pattern: ^/connect。但没有奏效。在我当前的代码中,如果我在登录时输入了错误的用户名或密码,请给出此错误No route found for "GET /account/login" (from "http://localhost/app_dev.php/login")

并且我希望main_login的登录和注销路径仅为/login/logout

我认为问题出在这里:

login:
    pattern:  ^/connect/login$
    security: false

我在使用FOSUSerBundle、SonataAdminBundle和HWIOAuthBundle 时遇到了类似的问题

我在SonataUserBundle安装步骤中找到了答案

我编辑以匹配您的路线

firewalls:
    # Disabling the security for the web debug toolbar, the profiler and Assetic.
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
    # -> custom firewall for the admin area of the URL
    main_login:
        pattern:        /account(.*)
        context:        user
        form_login:
            provider:       fos_userbundle
            login_path:     /account/login
            use_forward:    false
            check_path:     /account/login_check
            failure_path:   null
        logout:
            path:           /account/logout
        anonymous:  true
    # -> end custom configuration
    # default login area for standard users
    # This firewall is used to handle the public login area
    # This part is handled by the FOS User Bundle
    # secured_area is user for hwioauthbundle
    oauth_login: 
        pattern:            .*
        context:            user
        remember_me:
            key:            %secret%
            lifetime:       30 # 365 days in seconds
            path:           /
            always_remember_me: true
            remember_me_parameter: _remember_me
        form_login:
            provider:       fos_userbundle
            login_path:     /connect/login
            use_forward:    false
            check_path:     /login_check
            failure_path:   null
        logout:
            path:           /connect/logout
        oauth:
            remember_me:    true
            # https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/internals/response_object_and_paths.md
            resource_owners:
                facebook:       "/connect/login_facebook"
            login_path:        /connect/login
            use_forward:       false
            failure_path:      /connect/login
            oauth_user_provider:
                service:  my_user_provider
        anonymous:          true
    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
        - { path: ^/account, roles: ROLE_USER }

最新更新