1
Я пытаюсь создать аутентификацию в symfony3, но не работаю. У меня нет ошибок, и в dev bar у меня есть Logged in as anon
. Моя сущность:Аутентификация в 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;
}
}
Мой файл маршрутизации:
app_desktop_homepage:
path: /
defaults: { _controller: AppDesktopBundle:Default:index }
login:
path: /login
defaults: { _controller: AppDesktopBundle:Member:login }
Мой контроллер:
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,
));
}
}
Мой файл безопасности:
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
Мой шаблон:
<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>
Я не понимаю, где проблема. Когда я отправляю форму, у меня нет ошибок, если пользователь существует или что-то еще.
Прежде всего, учитывая эту конфигурацию, ваша компании должна реализовать UserInterface, и ваш репозиторий (не показан здесь) должен реализовать UserProviderInterface. Пожалуйста, внимательно ознакомьтесь с статьей поваренной книги: http://symfony.com/doc/current/security/entity_provider.html. Кроме того, до тех пор, пока вы не получите доступ к ресурсу, который требует полной проверки подлинности, учитывая эту конфигурацию, разрешена анонимная аутентификация (и ваш логин не будет запущен). – Gerry