Ich versuche, eine Authentifizierung in Symfony3 erstellen, aber nicht funktionieren. Ich habe keine Fehler und in der Dev-Leiste habe ich Logged in as anon
. Meine Einheit:Authentifizierung in symfony3
<?php
namespace App\DesktopBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Member
*
* @ORM\Table(name="member")
* @ORM\Entity(repositoryClass="App\DesktopBundle\Repository \MemberRepository")
*/
class Member
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=255)
*/
private $username;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=255)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=255)
*/
private $password;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set nickname
*
* @param string username
*
* @return Member
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* Set email
*
* @param string $email
*
* @return Member
*/
public function setEmail($email)
{
$this->email = $email;
return $this;
}
/**
* Get email
*
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* Set password
*
* @param string $password
*
* @return Member
*/
public function setPassword($password)
{
$this->password = $password;
return $this;
}
/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}
}
Meine Routing-Datei:
app_desktop_homepage:
path: /
defaults: { _controller: AppDesktopBundle:Default:index }
login:
path: /login
defaults: { _controller: AppDesktopBundle:Member:login }
Mein Controller:
namespace App\DesktopBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class MemberController extends Controller{
public function loginAction(Request $request)
{
$authenticationUtils = $this->get('security.authentication_utils');
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('AppDesktopBundle:Header:disconnected.html.twig', array(
'last_username' => $lastUsername,
'error' => $error,
));
}
}
Meine Sicherheitsdatei:
security:
hide_user_not_found: false
encoders:
AppDesktopBundle\Entity\Member:
algorithm: bcrypt
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
our_db_provider:
entity:
class: AppDesktopBundle:Member
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: ^/
provider: our_db_provider
form_login:
login_path: login
check_path: login
csrf_token_generator: security.csrf.token_manager
username_parameter: _username
password_parameter: _password
logout: true
anonymous: true
Meine Vorlage:
<form action="{{ path('login') }}" method="post">
<div class="form-group">
<input type="text" name="_username" placeholder="User name" class="form-control">
</div>
<div class="form-group">
<input type="password" name="_password" placeholder="Password" class="form-control">
</div>
<div class="loginbox">
<button class="btn signin-btn" type="submit">LOGIN</button>
</div>
</form>
Ich verstehe nicht, wo das Problem liegt. Wenn ich ein Formular abschicke, habe ich keine Fehler, wenn ein Benutzer existiert oder etwas anderes. Abschnitt try
Vor allem, da diese Konfiguration, Ihr Unternehmen muss implementieren Sie das UserInterface, und Ihr Repository (hier nicht gezeigt) muss das UserProviderInterface implementieren. Bitte werfen Sie einen Blick auf den Kochbuchartikel: http://symfony.com/doc/current/security/entity_provider.html. Solange Sie nicht auf eine Ressource zugreifen, die eine vollständige Authentifizierung erfordert, ist die anonyme Authentifizierung bei dieser Konfiguration zulässig (und Ihre Anmeldung wird nicht ausgelöst). – Gerry