Intereting Posts
получить ответ «победа / отказ» от mysqli_query php: удаление разделяемой памяти на окнах strtotime () считается вредным? Отправить значение текстового поля в PHP MySQL с помощью xcode 8 (Objective-c) с действием или кликом? Фильтрация файла журнала с использованием COUNT, GROUP BY, ORDER BY MAX Как узнать, когда MySQL UPDATE был успешным по сравнению с фактически обновленными данными? Symfony 2 присоединяется к неработающей доктрине и MySQL если пустое значение $ _POST присваивает значение в цикле foreach Альтернативный var_dump для PHP, который позволяет ограничить глубину вложенных массивов Каков наилучший способ вывода всех данных из таблицы на страницу без сбоя страницы? Ошибка при импорте wp_options Таблица для WORDPRESS (ошибка внешнего ключа) я могу настроить задание cron для localhost Извлечение ключей массива с входа JSON Как интегрировать nodeJS + Socket.IO и PHP? PHP Предупреждение: сеанс активен. Вы не можете изменить настройки ini-модуля сеанса в это время в /../

Вход с 2 различными таблицами в Symfony2

Im использует Symfony2.4.3. Я попробовал несколько методов из многих учебных пособий, но все же не могу заставить этот логин работать. Для моей учетной записи есть две разные таблицы. mst_pelajar для ROLE_USER с именем mst_pegawai качестве имени пользователя и mst_pegawai для ROLE_ADMIN с ROLE_ADMIN na качестве имени пользователя. Я могу заставить его работать для in_memory имени пользователя и пароля in_memory . Я пытаюсь сделать эту систему входа в систему, сначала вставляя простой текст в базу данных. Я получаю bad credentials запись с этими настройками.

Вот мой security.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); } } 

Пользовательский объект почти такой же, как и с администратором, я сначала создам админ-логин после получения проблемы. Я просто показываю важную область наверху. Просто прокомментируйте, если потребуется другое поле.

Здесь мой DefaultController для администратора:

 <?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 } 

Надежда может помочь кому-то с той же проблемой. Спасибо.