Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 使用Symfony2中的2个不同表登录_Php_Symfony - Fatal编程技术网

Php 使用Symfony2中的2个不同表登录

Php 使用Symfony2中的2个不同表登录,php,symfony,Php,Symfony,我使用的是Symfony 2.4.3。我尝试了许多教程中的几种方法,但仍然无法使此登录正常工作。我的登录页面有两个不同的表mst\u pelajar用于ROLE\u用户以nis字段作为用户名,而mst\u pegawai用于ROLE\u ADMIN以na字段作为用户名 我可以在内存中设置用户名和密码定义。我试图通过先在数据库中插入纯文本来使这个登录系统工作。此设置导致错误凭据错误 这是我的安全。yml: security: encoders: #Symfony\Compo

我使用的是Symfony 2.4.3。我尝试了许多教程中的几种方法,但仍然无法使此登录正常工作。我的登录页面有两个不同的表
mst\u pelajar
用于
ROLE\u用户
nis
字段作为用户名,而
mst\u pegawai
用于
ROLE\u ADMIN
na
字段作为用户名

我可以在内存中设置用户名和密码定义。我试图通过先在数据库中插入纯文本来使这个登录系统工作。此设置导致
错误凭据
错误

这是我的安全。yml:

security:
    encoders:
        #Symfony\Component\Security\Core\User\User: plaintext
        Sifo\AdminBundle\Entity\MstPelajar: plaintext
        Sifo\AdminBundle\Entity\MstPegawai: plaintext

    role_hierarchy:
        #ROLE_ADMIN:       ROLE_USER
        #ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
    #in_memory:
    #    memory:
    #        users:
    #            user:  { password: userpass, roles: [ 'ROLE_USER' ] }
    #            admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }

        admin_area:
            entity: { class: SifoAdminBundle:MstPegawai, property: na }
        user_area:
            entity: { class: SifoAdminBundle:MstPelajar, property: nis }

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
            anonymous: true
        alogin:
            pattern:  ^/admin/login$
            security: false
            anonymous: true
        ulogin:
            pattern:  ^/user/login$
            security: false
            anonymous: true
        admin_area:
            pattern:    ^/admin
            anonymous: false
            form_login:
                check_path: /admin/login_check
                login_path: /admin/login
            logout:
                path:   /admin/logout
                target: /admin
        user_area:
            pattern: ^/user
            anonymous: false
            form_login: 
                check_path: /user/login_check
                login_path: /user/login
            logout:
                path:   /user/logout
                target: /user

    access_control:
        - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, roles: ROLE_ADMIN }
        - { path: ^/user/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/, roles: ROLE_USER }
管理实体:

<?php

namespace Sifo\AdminBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * MstPelajar
 */
class MstPelajar implements UserInterface, \Serializable
{
    /**
     * @var integer
     */
    private $id;

     * @var string
     */
    private $nis;


    /**
     * @var string
     */
    private $password;

    /**
     * @var string
     */
    private $salt;

    /**
     * @var boolean
     */
    private $aktif;

    /**
     * @var \DateTime
     */
    private $timestamp;

    /**
     * @var string
     */
    private $operator;

    private $username;

    /**
     * Set id
     *
     * @param integer $id
     * @return MstPelajar
     */
    public function setId($id)
    {
        $this->id = $id;

        return $this;
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }


    /**
     * Set nis
     *
     * @param string $nis
     * @return MstPelajar
     */
    public function setNis($nis)
    {
        $this->nis = $nis;

        return $this;
    }

    /**
     * Get nis
     *
     * @return string 
     */
    public function getNis()
    {
        return $this->nis;
    }

    /**
     * Set password
     *
     * @param string $password
     * @return MstPelajar
     */
    public function setPassword($password)
    {
        $this->password = $password;

        return $this;
    }

    /**
     * Get password
     *
     * @return string 
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     * Set salt
     *
     * @param string $salt
     * @return MstPelajar
     */
    public function setSalt($salt)
    {
        $this->salt = $salt;

        return $this;
    }

    /**
     * Get salt
     *
     * @return string 
     */
    public function getSalt()
    {
        return $this->salt;
    }

    public function __construct()
    {
        $this->aktif = true;
        // may not be needed, see section on salt below
        // $this->salt = md5(uniqid(null, true));
    }

    public function getUsername()
    {
        return $this->nis;
    }

    public function getRoles()
    {
        return array('ROLE_USER');
    }

    public function eraseCredentials()
    {
    }

    public function serialize()
    {
        return serialize(array(
            $this->id,
            $this->nis,
            $this->password,
            // see section on salt below
            // $this->salt,
        ));
    }

    public function unserialize($serialized)
    {
        list (
            $this->id,
            $this->nis,
            $this->password,
            // see section on salt below
            // $this->salt
        ) = unserialize($serialized);
    }
}
<?php

namespace Sifo\AdminBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;

use Sifo\AdminBundle\Form\DefaultType;

class DefaultController extends Controller
{

public function indexAction()
    {
        return $this->render('SifoAdminBundle:Default:index.html.twig');
    }

public function loginAction()
    {
        $request = $this->getRequest();
        $session = $request->getSession();

        // get the login error if there is one
        if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
            $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
        } else {
            $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
            $session->remove(SecurityContext::AUTHENTICATION_ERROR);
        }

        return $this->render('SifoAdminBundle:Default:login.html.twig', array(
            // last username entered by the user
            'last_username' => $session->get(SecurityContext::LAST_USERNAME),
            'error'         => $error,
        ));
    }
}

我只是解决了我的问题。我需要在防火墙中添加提供商。它将是这样的:

security:
    encoders:
        #Symfony\Component\Security\Core\User\User: plaintext
        Sifo\AdminBundle\Entity\MstPelajar: plaintext
        Sifo\AdminBundle\Entity\MstPegawai: plaintext

    role_hierarchy:
        #ROLE_ADMIN:       ROLE_USER
        #ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        #in_memory:
        #    memory:
        #        users:
        #            user:  { password: userpass, roles: [ 'ROLE_USER' ] }
        #            admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
        admin_area:
            entity: { class: SifoAdminBundle:MstPegawai, property: na }
        user_area:
            entity: { class: SifoAdminBundle:MstPelajar, property: nis }

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
            anonymous: true
        alogin:
            pattern: ^/admin/login$
            security: false
            anonymous: true
        ulogin:
            pattern: ^/user/login$
            security: false
            anonymous: true
        admin_area:
            pattern: ^/admin
            provider: admin_area
            anonymous: false
            form_login:
                check_path: /admin/login_check
                login_path: /admin/login
            logout:
                path: /admin/logout
                target: /admin
        user_area:
            pattern: ^/user
            provider: user_area
            anonymous: false
            form_login: 
                check_path: /user/login_check
                login_path: /user/login
            logout:
                path: /user/logout
                target: /user

    access_control:
        - { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, roles: ROLE_ADMIN }
        - { path: ^/user/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/user/, roles: ROLE_USER }