0

我已成功配置 FOSUserBundle 以连接到网站的管理部分,效果很好。

我们希望公共用户只能通过 Facebook 登录网站,所以我还安装了 FOSFacebookBundle,它可以工作。有点。我可以登录、验证、访问用户的个人资料页面和注销;所有这些都按预期工作。

但是,当用户通过 Facebook 登录时,不会将该用户添加到数据库中。我误认为这是文档底部的“自定义用户提供程序”(https://github.com/FriendsOfSymfony/FOSFacebookBundle)应该做的吗?

基本上,当发生 Facebook 登录时,会添加用户(如有必要),然后通过 FOSUserBundle 获取。

我一次又一次地关注文档,在此处阅读有关 SO 的问题,但无法弄清楚(未)发生了什么。

任何人都知道代码中的什么地方可能导致登录操作不使用 Facebook 数据更新数据库?

4

1 回答 1

2

在 security.yml 中:

    providers:
        chain_provider:
            chain:
                providers: [my_fos_facebook_provider, fos_userbundle]
        my_fos_facebook_provider:
            id: my.facebook.user
        fos_userbundle:
            id: fos_user.user_manager
    firewalls:
        admin:
            pattern:      /admin(.*)
            form_login:
                provider:       fos_userbundle
                login_path:     /admin/login
                use_forward:    false
                check_path:     /admin/login_check
                failure_path:   null
            logout:
                path:           /admin/logout
            anonymous:    true
        public:
            # since anonymous is allowed users will not be forced to login
            pattern:   ^/.*
            fos_facebook:
                provider: my_fos_facebook_provider
                app_url: "http://www.facebook.com/apps/application.php?id=your_app_id"
                server_url: "http://localhost/facebookApp/"
                login_path: /
                check_path: /login_check_fb
                default_target_path: /moi
            anonymous: true
            logout:
                handlers: ["fos_facebook.logout_handler"]

这个想法是通过运行磨坊用户名和密码访问管理员,普通用户通过 Facebook 登录。

现在,关键部分是定义多个提供者(我有),但也许最重要的是在每个防火墙中指定“提供者”。fos_userbundle 用于管理员,my_fos_facebook_provider 用于公共

于 2012-11-19T00:07:55.047 回答