“security.providers.db_provider”

时间:2017-09-07 14:57:26

标签: php symfony doctrine-orm

    **Security.yml** Creating Authentication (Log in page)
        I have attached a error screen shot i am unable to view the page.

Security.yml 创建身份验证(登录页面)             我附加了错误屏幕截图我无法查看该页面。 Security.yml 创建身份验证(登录页面)             我附加了错误屏幕截图我无法查看该页面。 Security.yml 创建身份验证(登录页面)             我附加了错误屏幕截图我无法查看该页面。

     [![enter image description here][1]][1]

        # To get started with security, check out the documentation:
        # https://symfony.com/doc/current/security.html
        security:
            encoders:
                AppBundle\Entity\User:
                algorithm: bcrypt 


            # https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
            providers:
                db_provider:
                    entity:
                    class: AppBundle:User
                    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:
                    anonymous: ~
                    form_login:
                        login_path: login
                        check_path: login



    **User.php** This is my entity

        <?php

        namespace AppBundle\Entity;

        use Doctrine\ORM\Mapping as ORM;
        use Symfony\Component\Security\Core\User\UserInterface;

        /**
         * @ORM\Table(name="user")
         * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
         */
        class User implements UserInterface, \Serializable
        {
            /**
             * @ORM\Column(type="integer")
             * @ORM\Id
             * @ORM\GeneratedValue(strategy="AUTO")
             */
            private $id;

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

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

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

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

            public function __construct()
            {
                $this->isActive = true;
                // may not be needed, see section on salt below
                // $this->salt = md5(uniqid('', true));
            }

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

            public function getSalt()
            {
                // you *may* need a real salt depending on your encoder
                // see section on salt below
                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);
            }
        }


      [1]: https://i.stack.imgur.com/U1IJX.jpg


    **config.yml** 
This is my config.yml here i added driver pdo_sqlite and form_theme: -'bootstrap_3_layout.html.twig'

    imports:
        - { resource: parameters.yml }
        - { resource: security.yml }
        - { resource: services.yml }

    # Put parameters here that don't need to change on each machine where the app is deployed
    # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
    parameters:
        locale: en

    framework:
        #esi: ~
        #translator: { fallbacks: ['%locale%'] }
        secret: '%secret%'
        router:
            resource: '%kernel.project_dir%/app/config/routing.yml'
            strict_requirements: ~
        form: ~
        csrf_protection: ~
        validation: { enable_annotations: true }
        #serializer: { enable_annotations: true }
        templating:
            engines: ['twig']
        default_locale: '%locale%'
        trusted_hosts: ~
        session:
            # https://symfony.com/doc/current/reference/configuration/framework.html#handler-id
            handler_id: session.handler.native_file
            save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
        fragments: ~
        http_method_override: true
        assets: ~
        php_errors:
            log: true

    # Twig Configuration
    twig:
        debug: '%kernel.debug%'
        strict_variables: '%kernel.debug%'
        form_theme:
        - 'bootstrap_3_layout.html.twig'

    # Doctrine Configuration
    doctrine:
        dbal:
            driver: pdo_sqlite
            host: '%database_host%'
            port: '%database_port%'
            dbname: '%database_name%'
            user: '%database_user%'
            password: '%database_password%'
            charset: UTF8
            path: '% database_path %'
            # if using pdo_sqlite as your database driver:
            #   1. add the path in parameters.yml
            #     e.g. database_path: '%kernel.project_dir%/var/data/data.sqlite'
            #   2. Uncomment database_path in parameters.yml.dist
            #   3. Uncomment next line:
            #path: '%database_path%'

        orm:
            auto_generate_proxy_classes: '%kernel.debug%'
            naming_strategy: doctrine.orm.naming_strategy.underscore
            auto_mapping: true

    # Swiftmailer Configuration
    swiftmailer:
        transport: '%mailer_transport%'
        host: '%mailer_host%'
        username: '%mailer_user%'
        password: '%mailer_password%'
        spool: { type: memory }


    **parameters.yml**
This is my parameters.yml file i didn't change anything in this file. 

    # This file is auto-generated during the composer install
    parameters:
        database_host: 127.0.0.1
        database_port: null
        database_name: symfony
        database_user: root
        database_password: null
        mailer_transport: smtp
        mailer_host: 127.0.0.1
        mailer_user: null
        mailer_password: null
        secret: ab2af876f87b559feb166e695a29ec552758419a


    **parameters.yml.dist**
This is my **parameters.yml.dist** here i uncomment database_path:
This is my **parameters.yml.dist** here i uncomment database_path: 
This is my **parameters.yml.dist** here i uncomment database_path: 
This is my **parameters.yml.dist** here i uncomment database_path:  


    # This file is a "template" of what your parameters.yml file should look like
    # Set parameters here that may be different on each deployment target of the app, e.g. development, staging, production.
    # https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
    parameters:
        database_host: 127.0.0.1
        database_port: ~
        database_name: symfony
        database_user: root
        database_password: ~
        # You should uncomment this if you want to use pdo_sqlite
        database_path: '%kernel.project_dir%/var/data/data.sqlite'

        mailer_transport: smtp
        mailer_host: 127.0.0.1
        mailer_user: ~
        mailer_password: ~

        # A secret key that's used to generate certain security-related tokens
        secret: ThisTokenIsNotSoSecretChangeIt

1 个答案:

答案 0 :(得分:2)

您的配置/缩进错误。

更改

providers:
    db_provider:
        entity:
        class: AppBundle:User
        property: username

providers:
    db_provider:
        entity: 
            class: AppBundle:User
            property: username

参考:http://symfony.com/doc/current/reference/configuration/security.html