Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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
Php 带有PUGXMultiUserBundle和多登录表单的Symfony 2_Php_Symfony_Fosuserbundle_Pugxmultiuserbundle - Fatal编程技术网

Php 带有PUGXMultiUserBundle和多登录表单的Symfony 2

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

这里是我的问题:我的应用程序中有两类用户(locataires和propriétaires),我需要一个(或两个)登录表单。我使用PUGXMultiUserBundle来管理我的所有用户

以下是loggin“proprietaires”的视图:

和我的文件app/config/security.yml:

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 }