私はこのフレームワークでWebアプリケーションを開始しています。そして、私は最初の部分に問題がある、ログイン: 私は2つのエンティティがあります。symfonyセキュリティファイアウォール
USERS
<?php
namespace app\UsuariosBundle\Entity;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* Users
*
* @ORM\Table()
* @ORM\Entity
*/
class Users implements UserInterface
{
//some properties and getters and setters
public function getPassword()
{
return $this->password;
}
function eraseCredentials()
{
}
function getRoles(){
return array('ROLE_USUARIO');
}
function getUsername(){
return $this->getEmail();
}
function getSalt(){
return 'my_salt';
}
}
CLIENTS
<?php
namespace app\ClientesBundle\Entity;
use Symfony\Component\Security\Core\User\UserInterface;
use Doctrine\ORM\Mapping as ORM;
/**
* Clients
*
* @ORM\Table()
* @ORM\Entity
*/
class Clients implements UserInterface
{
//some properties and getters and setters
public function getPassword()
{
return $this->password;
}
function eraseCredentials()
{
}
function getRoles(){
return array('ROLE_USUARIO');
}
function getUsername(){
return $this->getEmail();
}
function getSalt(){
return 'my_salt';
}
}
は私があるためにこれらの最後のメソッドを追加しましたそれは私たちが必要とする文書。
は今、私はこの時点で - 私が右の場合は知っているドント
security:
encoders:
app\UsersBundle\Entity\Users: { algorithm: sha512 }
app\Clients\Entity\Clients: { algorithm: sha512 }
access_control:
- { path: ^/users/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/users/registro, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/users/*, roles: ROLE_USUARIO }
role_hierarchy:
ROLE_ADMIN: [ROLE_USER, ROLE_SONATA_ADMIN,ROLE_USUARIO]
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
chain_provider:
chain:
providers: [users, clients]
users:
entity: { class: app\UsersBundle\Entity\Users, property: email }
clients:
entity: { class: app\ClientsBundle\Entity\Clients, property: email }
firewalls:
frontend:
pattern: ^/*
provider: chain_provider
form_login:
login_path: users_login
check_path: users_login_check
logout:
path: users_logout
私のsecurity.ymlファイルを設定しています。 USERSとCLIENTの2種類のユーザーがあります(chain_providerは、2種類のユーザー間でログインするのに間違いありません)。
<?php
namespace app\UsersBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\SecurityContext;
class DefaultController extends Controller
{
public function homeAction(){
return $this->render('UsuariosBundle:Default:login.html.twig');
}
public function loginAction(Request $peticion){
}
}
私はブラウザで書く場合は、「ローカル:ファイル
users_login:
pattern: /login
defaults: { _controller: UsersBundle:Default:login }
users_login_check:
pattern: /login_check
users_logout:
pattern: /logout
コンフィグルーティングファイル
users:
resource: "@UsersBundle/Resources/config/routing.yml"
prefix: /users
home:
path: /users/login
defaults: { _controller:UsersBundle:Default:home}
_home:
path: /
defaults: { _controller FrameworkBundle:Redirect:redirect, route: home }
そして最後にUsersBundleコントローラをルーティング
ユーザー私は "localhost/app/web/app_dev.php/users/login"にリダイレクトされますが、エラー302が発生し、 "リダイレクトが多すぎます"と表示されます。また、クロムコンソール(F12)を開くと、3秒ごとにlogin.phpファイルが「開く」ことが多く見られます。
各パートを個別にテストすると、認証が機能しますか? セキュリティを追加:ファイアウォール 'frontend'にfalseを入力してログインを試みます。 また、ファイアウォールのフロントエンドにプロバイダを指定する必要があるかもしれません – Strnm