我正在开始一个新项目,使用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]
关于我应该怎么做的任何想法?
答案 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}}