2016-10-20 12 views
1

symfony3で認証を作成しようとしましたが、動作しません。私はエラーがなく、devバーには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> 

問題の原因はわかりません。フォームを提出すると、ユーザーが存在するか何か他のものがあればエラーは発生しません。一例として、access_control情報を追加したセキュリティセクショントライで

+0

この構成与えられたすべてのまず、あなたのエンティティは、する必要がありますUserInterfaceを実装し、リポジトリ(ここには示していません)はUserProviderInterfaceを実装する必要があります。クッキングブックの記事http://symfony.com/doc/current/security/entity_provider.htmlを徹底的に見てください。また、完全な認証が必要なリソースにアクセスしない限り、この設定を使用すると匿名認証が許可されているため、ログインは実行されません。 – Gerry

答えて

0

のsecurity.yml

access_control: 
    # URL which need to be available to anonymous users 
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/, role: ROLE_USER } 

・ホープ、このヘルプ

関連する問題