Я стараюсь создавать login в symfony 3.4, которые присоединяли бы к существующей базе данных. Когда ты не удаешься пользователь, и пароль login выходит сообщение неправильных верительных грамот, но когда я помещаю правильный пользователь, и пароль плохо не выходит сообщение и если я помещаю уже правильный пользователь и правильный пароль также не функционирует, я оставляю вам здесь мой код, который должен видеть, что он происходит с ним.
Мы начинаем с security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
AppBundle\Entity\Users:
algorithm: bcrypt
cost: 4
providers:
our_db_provider:
entity:
class: AppBundle:Users
property: user
firewalls:
dev:
http_basic: ~
provider: our_db_provider
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
user_checker: security.user_checker
anonymous: ~
form_login:
login_path: login
check_path: login
main:
provider: our_db_provider
user_checker: security.user_checker
anonymous: ~
form_login:
login_path: login
check_path: login
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
Мы продолжаем с entitidad пользователей
<?php
namespace AppBundle\Entity;
/**
* Users
*/
class Users
{
/**
* @var string
*/
private $user;
/**
* @var string
*/
private $pass;
/**
* @var string
*/
private $name;
/**
* @var string
*/
private $surname;
/**
* @var string
*/
private $email;
/**
* @var string|null
*/
private $email2;
/**
* @var string|null
*/
private $tlf;
/**
* @var string|null
*/
private $movil;
/**
* @var string
*/
private $extmovil;
/**
* @var string
*/
private $menu;
/**
* @var bool|null
*/
private $admin;
/**
* @var int
*/
private $primeraVez = '1';
/**
* @var \DateTime
*/
private $changePass;
/**
* @var int
*/
private $idUser;
/**
* Set user.
*
* @param string $user
*
* @return Users
*/
public function setUser($user)
{
$this->user = $user;
return $this;
}
/**
* Get user.
*
* @return string
*/
public function getUser()
{
return $this->user;
}
/**
* Set pass.
*
* @param string $pass
*
* @return Users
*/
public function setPass($pass)
{
$this->pass = $pass;
return $this;
}
/**
* Get pass.
*
* @return string
*/
public function getPass()
{
return $this->pass;
}
/**
* Get password.
*
* @return string
*/
public function getPassword()
{
return $this->pass;
}
/**
* Set name.
*
* @param string $name
*
* @return Users
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set surname.
*
* @param string $surname
*
* @return Users
*/
public function setSurname($surname)
{
$this->surname = $surname;
return $this;
}
/**
* Get surname.
*
* @return string
*/
public function getSurname()
{
return $this->surname;
}
/**
* Set email.
*
* @param string $email
*
* @return Users
*/
public function setEmail($email)
{
$this->email = $email;
return $this;
}
/**
* Get email.
*
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* Set email2.
*
* @param string|null $email2
*
* @return Users
*/
public function setEmail2($email2 = null)
{
$this->email2 = $email2;
return $this;
}
/**
* Get email2.
*
* @return string|null
*/
public function getEmail2()
{
return $this->email2;
}
/**
* Set tlf.
*
* @param string|null $tlf
*
* @return Users
*/
public function setTlf($tlf = null)
{
$this->tlf = $tlf;
return $this;
}
/**
* Get tlf.
*
* @return string|null
*/
public function getTlf()
{
return $this->tlf;
}
/**
* Set movil.
*
* @param string|null $movil
*
* @return Users
*/
public function setMovil($movil = null)
{
$this->movil = $movil;
return $this;
}
/**
* Get movil.
*
* @return string|null
*/
public function getMovil()
{
return $this->movil;
}
/**
* Set extmovil.
*
* @param string $extmovil
*
* @return Users
*/
public function setExtmovil($extmovil)
{
$this->extmovil = $extmovil;
return $this;
}
/**
* Get extmovil.
*
* @return string
*/
public function getExtmovil()
{
return $this->extmovil;
}
/**
* Set menu.
*
* @param string $menu
*
* @return Users
*/
public function setMenu($menu)
{
$this->menu = $menu;
return $this;
}
/**
* Get menu.
*
* @return string
*/
public function getMenu()
{
return $this->menu;
}
/**
* Set admin.
*
* @param bool|null $admin
*
* @return Users
*/
public function setAdmin($admin = null)
{
$this->admin = $admin;
return $this;
}
/**
* Get admin.
*
* @return bool|null
*/
public function getAdmin()
{
return $this->admin;
}
/**
* Set primeraVez.
*
* @param int $primeraVez
*
* @return Users
*/
public function setPrimeraVez($primeraVez)
{
$this->primeraVez = $primeraVez;
return $this;
}
/**
* Get primeraVez.
*
* @return int
*/
public function getPrimeraVez()
{
return $this->primeraVez;
}
/**
* Set changePass.
*
* @param \DateTime $changePass
*
* @return Users
*/
public function setChangePass($changePass)
{
$this->changePass = $changePass;
return $this;
}
/**
* Get changePass.
*
* @return \DateTime
*/
public function getChangePass()
{
return $this->changePass;
}
/**
* Get idUser.
*
* @return int
*/
public function getIdUser()
{
return $this->idUser;
}
// public function getUsername()
// {
// return $this->email;
// }
public function getSalt()
{
return null;
}
// public function getRoles()
// {
// // En este caso definimos un rol fijo, en el caso de que tengamos un campo role en la tabla de la BBDD tendríamos que hacer $this->getRole()
// return array('ROLE_USER');
// }
public function eraseCredentials()
{
}
}
Хороший twig - просто формуляр, но если, что функционирует, так как с in memory в secure.yml если, что функционировал до настоящего времени, что я принял решение поместить ему базу данных.
Я верю в то, что ошибка возможно эта, в которой только находит пользователь но пароль, не знала, которому колонны не хватает.
Чтобы мочь возвышать login используя поставщик, свойственный базе данных (например, таблица Пользователь [Users в твоем случае]) должен осуществлять класс Symfony UserInterface
, этот класс добавляет какие-то функции, которые ты должен определять как пример, который я выставляю.
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @ORM\Entity(repositoryClass="App\Repository\UsuarioRepository")
*
*/
class Usuario implements UserInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
###############################################################
###################### Custom Functions #######################
###############################################################
public function getRoles()
{
return [
'ROLE_USUARIO', // si tienes una relación con una clase rol, debes retornar por este lugar en formato arra
];
}
public function getPassword()
{
return $this->password; // retorna tu atributo de password
}
public function getSalt()
{
// TODO: Implement getSalt() method. //si usas algún encriptador con salt, va acá
}
public function getUsername()
{
return $this->correo; // el username que quieres usar
}
public function eraseCredentials()
{
// TODO: Implement eraseCredentials() method.
}
}
В Восток соединил ты можешь видеть ее documentaciГіn, в котором ты нуждаешься (часть serialize не является строго необходимой). Помни, что password пользователя уже должен быть предохраненным от способа encriptada в BD, чтобы реализовывать ее acciГіn login.