Php 带有PUGXMultiUserBundle和多登录表单的Symfony 2
这里是我的问题:我的应用程序中有两类用户(locataires和propriétaires),我需要一个(或两个)登录表单。我使用PUGXMultiUserBundle来管理我的所有用户 以下是loggin“proprietaires”的视图: 和我的文件app/config/security.yml:Php 带有PUGXMultiUserBundle和多登录表单的Symfony 2,php,symfony,fosuserbundle,pugxmultiuserbundle,Php,Symfony,Fosuserbundle,Pugxmultiuserbundle,这里是我的问题:我的应用程序中有两类用户(locataires和propriétaires),我需要一个(或两个)登录表单。我使用PUGXMultiUserBundle来管理我的所有用户 以下是loggin“proprietaires”的视图: 和我的文件app/config/security.yml: security: encoders: Symfony\Component\Security\Core\User\User: plaintext FOS
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
FOS\UserBundle\Model\UserInterface: sha512
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
in_memory:
memory: ~
fos_userbundle:
id: fos_user.user_manager
proprietaire:
entity:
class: AppBundle:Proprietaire
property: username
locataire:
entity:
class: AppBundle:Locataire
property: username
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
# form_login:
# provider: fos_userbundle
# csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4
# logout:
# path: /logout
# target: /
anonymous: true
proprietaire_firewall:
pattern: .*
form_login:
# Soumet le formulaire de connection ici
provider: fos_userbundle
check_path: /proprietaire_login_check
logout:
path: /proprietaire_logout
target: /
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/profile, role: ROLE_USER }
安全性:
编码器:
Symfony\Component\Security\Core\User\User:纯文本
FOS\UserBundle\Model\UserInterface:sha512
# http://symfony.com/doc/current/book/security.html#where-用户是否来自用户提供商
供应商:
内存中:
内存:~
fos_用户包:
id:fos\U用户。用户\U经理
业主:
实体:
类别:AppBundle:Proprietaire
属性:用户名
地点:
实体:
类别:AppBundle:Locataire
属性:用户名
防火墙:
#禁用资产和探查器的身份验证,根据需要进行调整
开发人员:
模式:^/((探查器wdt)| css |图像| js)/
安全性:错误
主要内容:
模式:^/
#表格(u)登入:
#提供商:fos_用户包
#csrf_provider:security.csrf.token_manager#使用form.csrf_provider代替SymfonyPUGXMultiUserBundle构建在FOSUserBundle之上,它使用条令表继承帮助管理不同类型的用户,查看您的数据库,您可以看到如何存在父表“User”和两个子表“地点”和“财产”“。不同类型的用户是指存在差异的点;例如:用户注册:表单的字段不同,配置文件编辑表单也不同。所有其余的用户之间没有区别,登录到网站,个人资料页面,注销操作。。。与往常一样,由FOSUserBundle直接处理所有这些问题
具体来说,您可以为两个用户使用一个登录表单(实际上我为三个不同的用户使用一个登录表单)。您不需要为每个用户设置防火墙,一个防火墙就足够了。是的,您可能需要在“访问控制”部分中定义角色,因为您必须仅保护与locataire相关的url,例如:/locataire/pays/rent/1(为用户提供角色的最佳方式是在类构造函数中,如下所示:
public function __construct() {
parent::__construct();
$this->roles = array('ROLE_LOCATAIRE');
};
)
因此,在security.yml文件中:
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
OC\UserBundle\Entity\User: sha512
providers:
main:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt|error)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
provider: main
form_login:
login_path: /login
check_path: fos_user_security_check
always_use_default_target_path: true
default_target_path: /profile
logout:
path: fos_user_security_logout
target: /index
role_hierarchy:
ROLE_LOCATAIRE: ROLE_USER
ROLE_PROPRIETAIRE: ROLE_USER
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/locataire, roles: ROLE_LOCATAIRE }
- { path: ^/proprietaire, roles: ROLE_PROPRIETAIRE }
我希望这对你有帮助,我知道这对新手来说是什么样子,因为我去过那里。慢慢来,如果你需要帮助,我就在这里
public function __construct() {
parent::__construct();
$this->roles = array('ROLE_LOCATAIRE');
};
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
OC\UserBundle\Entity\User: sha512
providers:
main:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt|error)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
provider: main
form_login:
login_path: /login
check_path: fos_user_security_check
always_use_default_target_path: true
default_target_path: /profile
logout:
path: fos_user_security_logout
target: /index
role_hierarchy:
ROLE_LOCATAIRE: ROLE_USER
ROLE_PROPRIETAIRE: ROLE_USER
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/locataire, roles: ROLE_LOCATAIRE }
- { path: ^/proprietaire, roles: ROLE_PROPRIETAIRE }