Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security FosUserBundle如何修复重定向循环_Security_Loops_Symfony_Configuration_Fosuserbundle - Fatal编程技术网

Security FosUserBundle如何修复重定向循环

Security FosUserBundle如何修复重定向循环,security,loops,symfony,configuration,fosuserbundle,Security,Loops,Symfony,Configuration,Fosuserbundle,嗨,我使用fosuserbundle登录后有重定向循环 看起来怎么样?我输入好的用户名和密码,然后登录我可以看到它与symfony profiller 探查器说这个请求重定向到http://web.dev/app_dev.php/admin/panel. 我去了那里,它说这个请求重定向到http://web.dev/app_dev.php/admin/login. 我在这里不再被认证了 这是我的安全: jms_security_extra: expressions: true secu

嗨,我使用fosuserbundle登录后有重定向循环 看起来怎么样?我输入好的用户名和密码,然后登录我可以看到它与symfony profiller 探查器说这个请求重定向到http://web.dev/app_dev.php/admin/panel. 我去了那里,它说这个请求重定向到http://web.dev/app_dev.php/admin/login. 我在这里不再被认证了

这是我的安全:

jms_security_extra:
    expressions: true

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

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        in_memory:
            memory:
                users:
                    "%api_username%":  { password: "%api_password%", roles: [ 'ROLE_API' ] }     
        fos_userbundle:
            id: fos_user.user_provider.username_email
        ssoprovider:
            id: sso_user_provider

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        login:
            pattern:  ^/demo/secured/login$
            security: false
        admin:
            pattern: ^/admin/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                login_path:                       fos_user_security_login
                check_path:                       fos_user_security_check
                default_target_path:              admin_main
            logout:    
                path: fos_user_security_logout   
                invalidate_session: true #https://github.com/symfony/symfony/issues/5868
            anonymous:    true
            remember_me:
                name:     "web_remember_me"
                key:      "%secret%"
                lifetime: 864000 # 10 days
                path:     /admin
        secured_area:
            pattern: ^/(?!admin)            
            form_login: 
                login_path : main_user_logout
            stateless: false
            anonymous: false
            simple_preauth:
                authenticator: sso_authenticator 
            logout:
                path:   main_user_logout
                invalidate_session: true 
                success_handler: sso_authentication_handler 
        api:
            pattern:    ^/api
            stateless:  true
            http_basic:
                realm: "Secured API Area"

    access_control:
        - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
        - { path: ^/api/, roles: ROLE_API }
        - { path: ^/, role: ROLE_USER }

这是因为我在config.yml cookie_域中定义了

配置yml:

framework:
    session:
      cookie_domain: .%domain% 
我必须添加“记住我”域配置

security.yml:

admin:
    remember_me:
        domain:   ".%domain%"

您是否为用户指定了role_SUPER_ADMIN或role_ADMIN角色?除非另有规定,否则生成的用户通常只具有role_user的角色。我得到了role_ADMIN我忽略了这些方法,当我添加了secured_区域并编写ssoprovider时,问题出现了。我使用fosuserbundle对经过身份验证的管理员进行身份验证,并使用我自己的自定义身份验证程序对用户进行身份验证您使用的是哪个版本的PHP?我遇到了一个与此非常类似的问题,结果证明这是PHP处理会话的一个错误。5.4,我已经解决了我的问题,因为我定义了cookie_域,并且在防火墙域中添加了:%domain%