FOSUserBundle:处理不同类型的用户

时间:2012-11-23 02:47:16

标签: symfony fosuserbundle

我正在开始一个新项目,使用symfony2 architercture和有用的FosUserBundle来处理我的用户。

在我的应用程序中,我有2种不同类型的用户,分别是:User和Entreprise。

我创建了一个Userform(其中包含嵌入式表单)。 现在我想创建一个EntrepriseForm(具有不同的嵌入式表单),但由于FosUserConfiguration仅允许1种注册表单类型,我被卡住了。

如果它有帮助,这就是我的config.yml的样子:

fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Digin\UserBundle\Entity\User
registration:
    confirmation:
        from_email: # Use this node only if you don't want the global email address for the confirmation email
            address:        xxx@xxx.org
            sender_name:    xxx
        enabled:    true # change to true for required email confirmation
        template:   FOSUserBundle:Registration:email.txt.twig
    form:
        type:               mybundle_user_registration
        handler:            fos_user.registration.form.handler.default
        name:               fos_user_registration_form
        validation_groups:  [Registration]

关于我应该怎么做的任何想法?

1 个答案:

答案 0 :(得分:1)

在您的位置,我将在您的security.yml中添加一个新角色(请记住以ROLE_启动它,symfony忽略其他角色)。然后添加监听器InteractiveLoginListener以在登录不同角色后执行一些额外的重定向。然后添加JMSSecurityExtraBundle这将帮助您仅通过注释验证accions和控制器中的访问权限:

use JMS\SecurityExtraBundle\Annotation\PreAuthorize;

class MyService
{
    /** @PreAuthorize("hasRole('A') or (hasRole('B') and hasRole('C'))") */
    public function secureMethod()
    {
        // ...
    }
}

查看文档:{​​{3}}