0

データベースに対して SF2 認証を作成したいのですが、SF2 の公式ドキュメントhttp://symfony.com/doc/2.0/cookbook/security/entity_provider.htmlを使用しました。問題は、チェックが機能しないことです。方法がわからない、エラーは発生しませんでした。ユーザー情報を入力した後、同じページ/ログインにまだエラーがなく、実際にはわかりません。

security.yml

security:
encoders:
  TEST\UserBundle\Entity\User:
    algorithm: sha512
    encode-as-base64: true
    iterations: 10


role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

providers:
    main:
        entity: { class: TESTUserBundle:User, property: username }

firewalls:
    login:
        pattern: ^/(login|reset|accueil)
        anonymous: true
    main:
        pattern: /.*
        form_login:
            check_path: /check_login
            login_path: /login
        logout:
            path: /logout
            target: /login
        security: true
        anonymous: false

access_control:
    #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
    #- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
    #- { path: ^/admin, roles: ROLE_ADMIN }

問題は、エラーが常に null であることです。これは私のログイン フォームです。

            {% if error == 1 %}
        <span class="pw-alert">E-mail et/ou mot de passe erroné(s)</span>
        {% endif %}
                <form action="{{ path('_security_check_user') }}" method="POST">
    <div>
        <label for="username">Username:</label>
        <input type="email" id="username" name="_username" value="{{ last_username }}" />
    </div>

    <div>
        <label for="password">Password:</label>
        <input type="password" id="password" name="_password" />
    </div>
                    <input type="submit" value="Se connecter" name="login"/>
                </div>

            </form>
4

1 に答える 1

0

check_path はすべきでは/login_checkありません/check_login(私にとってはうまくいきます)。プロバイダーの場合、クラスを次のように指定してみてください: TEST\UserBundle\Entity\User(データベースからそれらをログに記録したいので、ユーザー コントローラーではなくユーザー エンティティのパスを指定する必要があります)。provider: mainメインのファイアウォールを追加します。

それは役に立ちますか?

于 2012-10-04T10:18:02.247 に答える