In den letzten paar Tagen habe ich Probleme mit der Anmeldung eines Datenbankbenutzers mit Symfony/Doctrine, und ich bin jetzt ziemlich fest (ich bin neu in Symfony, BTW). Ich habe das Login mit dem in_memory-Provider (zu Beginn) funktioniert, aber jetzt möchte ich mich mit einem Datenbank-Benutzer anmelden und ich weiß nur nicht, was los ist.Symfony/Doktrin: Datenbankbenutzer kann nicht angemeldet werden, etwas nicht in security.yml richtig?
Ich ging die Dokumentation immer wieder durch und ich denke, ich habe alles richtig gemacht. Ich bekomme keine Fehler, es heißt nur "Ungültige Anmeldedaten". wenn ich versuche mich einzuloggen. Ich muss das Gefühl haben, dass es etwas mit Sicherheit zu tun hat. Aber ich habe alles versucht, was ich finden konnte. Unten ist mein Code;
security.yml;
security:
providers:
provider_users:
entity:
class: AppBundle:User
property: username
encoders:
AppBundle\Entity\User:
algorithm: bcrypt
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: ~
provider: provider_users
form_login:
login_path: login
check_path: login
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
User.php;
<?php
// src/AppBundle/Entity/User.php
namespace AppBundle\Entity;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* AppBundle\Entity\User
*
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="AppBundle\Entity\UserRepository")
*/
class User implements UserInterface, \Serializable
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="username", type="string", length=25, unique=true)
*/
private $username;
/**
* @ORM\Column(name="salt", type="string", length=40)
*/
private $salt;
/**
* @ORM\Column(name="password", type="string", length=40)
*/
private $password;
/**
* @ORM\Column(name="email", type="string", length=60, unique=true)
*/
private $email;
/**
* @ORM\Column(name="roles", type="string")
*/
private $roles;
/**
* @ORM\Column(name="is_active", type="boolean")
*/
private $isActive;
public function __construct()
{
$this->isActive = true;
$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
}
public function eraseCredentials()
{
//
}
/** @see \Serializable::serialize() */
public function serialize()
{
return serialize(array(
$this->id,
$this->username,
$this->password,
));
}
/** @see \Serializable::unserialize() */
public function unserialize($serialized)
{
list (
$this->id,
$this->username,
$this->password,
) = unserialize($serialized);
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set username
*
* @param string $username
*
* @return User
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* Set salt
*
* @param string $salt
*
* @return User
*/
public function setSalt($salt)
{
$this->salt = $salt;
return $this;
}
/**
* Get salt
*
* @return string
*/
public function getSalt()
{
return $this->salt;
}
/**
* Set password
*
* @param string $password
*
* @return User
*/
public function setPassword($password)
{
$this->password = $password;
return $this;
}
/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
/**
* Set email
*
* @param string $email
*
* @return User
*/
public function setEmail($email)
{
$this->email = $email;
return $this;
}
/**
* Get email
*
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* Set roles
*
* @param string $roles
*
* @return User
*/
public function setRoles($roles)
{
$this->roles = json_encode($roles);
return $this;
}
/**
* Get roles
*
* @return string[]
*/
public function getRoles()
{
return json_decode($this->roles);
}
/**
* Set isActive
*
* @param boolean $isActive
*
* @return User
*/
public function setIsActive($isActive)
{
$this->isActive = $isActive;
return $this;
}
/**
* Get isActive
*
* @return boolean
*/
public function getIsActive()
{
return $this->isActive;
}
}
ich auch, wenn ich nur den Benutzer "von Hand" bekommen getestet konnte mit getRepository() -> findAll() und das sieht in Ordnung;
array (size=1)
0 =>
object(AppBundle\Entity\User)[323]
private 'id' => int 20
private 'username' => string 'user' (length=4)
private 'salt' => string 'mqshzqa9syok0kw8ss4cscc84k4k804' (length=31)
private 'password' => string 'user1' (length=5)
private 'email' => string '[email protected]' (length=18)
private 'roles' => string '' (length=0)
private 'isActive' => boolean true
success!
Irgendwelche Vorschläge? Danke im Voraus!
Das Passwort in der db ist Klartext, sollte aber bcrypt hashed – JimL
Wie JimL sagte, bei der Registrierung müssen Sie Ihr Passwort mit bcrypt verschlüsseln. Ihr Passwort sieht wie normaler Text aus. – trauma
Danke Jungs, das scheint eine logische Erklärung zu sein. Ich werde mich darum kümmern und wenn ich es repariere, werde ich eine Lösung posten! –