2016-01-29 2 views
-1

Я пытаюсь создать некоторые функции входа в Symfony. Я новичок в Symfony, и я не могу найти решение моей проблемы.Symfony/login_check дает пустую страницу

Я использую пользователей из базы данных mySQL. Когда я вхожу в систему с неправильными учетными данными, он печатает ошибку на странице входа, что я использую неправильные учетные данные. Это потрясающе, потому что это то, что я хочу. Но когда я вхожу в систему с правильными учетными данными, он переходит на пустую страницу в/login_check. Это учебник, который я пытался использовать: http://symfony.com/doc/current/cookbook/security/entity_provider.html

Моя версия Symfony 2.8.

Вот мой security.yml

encoders: 
    Trekkerslep\DashboardBundle\Entity\User: 
     algorithm: bcrypt 

providers: 
    database_provider: 
     entity: 
      class: TrekkerslepDashboardBundle:User 

firewalls: 
    # disables authentication for assets and the profiler, adapt it according to your needs 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    default: 
     anonymous: ~ 
     pattern: ^/ 
     form_login: 
      provider: database_provider 
      login_path: /login 
      check_path: /login_check 
      csrf_token_generator: security.csrf.token_manager 
      default_target_path: trekkerslep_dashboard_main 
      always_use_default_target_path: true 

access_control: 
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY } 
    - { path: ^/, roles: [ROLE_USER] } 

Мой Entity Пользователь выглядит следующим образом:

class User implements UserInterface, \Serializable { 

    /** 
    * @ORM\Column(type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\Column(type="string", length=50, unique=true) 
    */ 
    protected $username; 

    /** 
    * @ORM\Column(type="string", length=64) 
    */ 
    protected $password; 

    /** 
    * @ORM\Column(type="string", length=100, unique=true) 
    */ 
    protected $email; 

    /** 
    * @ORM\Column(type="string") 
    */ 
    protected $screenname; 

    /** 
    * @ORM\Column(type="datetime") 
    */ 
    protected $created; 

    /** 
    * @ORM\Column(name="is_active", type="boolean") 
    */ 
    protected $isActive; 

    public function __construct() { 
     $this->isActive = true; 
    } 

    public function getUsername() { 
     return $this->getUsername(); 
    } 

    public function getSalt() { 
     return null; 
    } 

    public function getPassword() { 
     return $this->password; 
    } 

    public function getRoles() 
    { 
     return array('ROLE_USER'); 
    } 

    public function eraseCredentials() { 

    } 

    /** @see \Serializable::serialize() */ 
    public function serialize() { 
     return serialize(array(
      $this->id, 
      $this->username, 
      $this->password, 
      // see section on salt below 
      // $this->salt, 
     )); 
    } 

    /** @see \Serializable::unserialize() */ 
    public function unserialize($serialized) { 
     list (
      $this->id, 
      $this->username, 
      $this->password, 
      // see section on salt below 
      // $this->salt 
      ) = unserialize($serialized); 
    } 

И мой routing.yml:

trekkerslep_dashboard_main: 
    path: /
    defaults: { _controller: TrekkerslepDashboardBundle:Dashboard:index } 

trekkerslep_dashboard_login: 
    path:  /login 
    defaults: { _controller: TrekkerslepDashboardBundle:Security:login } 

trekkerslep_dashboard_login_check: 
    path:  /login_check 

Я надеюсь, что кто-то может помочь и видит, что я делаю неправильно. Заранее спасибо.

+1

Возможный дубликат [Ссылка - Что означает эта ошибка в PHP? - Ничего не видно. Страница пуста и белая.] (Http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php) – CBroe

ответ

0

Прежде всего, если вы можете, я настоятельно рекомендую вам использовать FOSUserBundle. Несмотря на то, что это пакет, который сдерживает вас, он работает, если вам нужно что-то простое. Назад к теме. Здесь у вас есть маршрут (trekkerslep_dashboard_login_check), который перенаправляется на http://whateveryoururlis.dev/login_check. Поскольку вы не используете ничего для самостоятельного управления логином, я думаю, вам нужно добавить контроллер и функцию в него, чтобы ваш login_check указывал на то, что соответствует вашим потребностям. Например, вы можете перенаправить на страницу с сообщением «Вам удалось подключиться». Кстати, если вы используете app_dev.php, вы должны увидеть, вошли ли вы в систему или нет.

Иногда кеш symfony пытается избить вас в подчинении. Если ваш код должен работать, но он не работает, вы можете попробовать его очистить, иногда он показывает ошибку, которую Symfony забыл вам рассказать.

Удачи вам!

+0

Спасибо за ваш ответ! Сейчас я использую FOSUserBundle, и все работает. Все еще не знаю, что я сделал неправильно. –

+0

Я не думаю, что вы делали что-то неправильно раньше, но я думаю, что учебник, который вы следовали, был немного испорчен, а так как вы начинаете Symfony, вы не можете видеть, где. (И, как факт, я тоже.) Удачи с fosuserbundle! – LamaDelRay