如何配置security.yml

时间:2014-02-09 21:07:01

标签: php security symfony login routing

我的security.yml使用Symfony 2时出现问题。

这是我文件的内容:

security:
 encoders:
    MOD\UserBundle\Entity\User:
        algorithm: sha512
        iterations: 1
        encode_as_base64: false

role_hierarchy:
    #[...]

providers:
    user_db:
        entity:
            class: MOD\UserBundle\Entity\User
            property: username

firewalls:
    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false

    login:
        pattern: ^/user/login$
        anonymous: true

    main:
        pattern: ^/
        anonymous: false
        provider: user_db
        form_login:
            login_path: user_login
            check_path: user_check
        logout:
            path: user_logout
            target: /user/login

我有一个名为User的实体,其字段为:id, email, username, password, salt, roles

当我尝试从/user/login登录时,结果始终相同:"Bad credentials"

有没有办法检查user_check请求中发生了什么?或security.yml中的任何明显错误配置?

这是我在app/logs/dev.log中得到的:

[2014-02-09 21:35:27] doctrine.DEBUG: SELECT t0.id AS id1, t0.username AS username2, t0.password AS password3, t0.salt AS salt4, t0.email AS email5, t0.roles AS roles6 FROM User t0 WHERE t0.username = ? LIMIT 1 ["Maxime"] []
[2014-02-09 21:35:27] security.INFO: Authentication request failed: Bad credentials [] []

在我的数据库中,我只有一位用户名为Maxime

2 个答案:

答案 0 :(得分:0)

谢谢zizoujab。 由于您问了我很多关于密码的问题以及在我的数据库中存储密码的方法,我最终在我的sha512中将plaintext替换为security.yml。 然后我尝试用以下方式登录: maxime / C7AD44CBAD762A5DA0A452F9E854FDC1E0E7A52A38015F23F3EAB1D80B931DD472634DFAC71CD34‌​EBC35D16AB7FB8A90C81F975113D6C7538DC69DD8DE9077EC 它有效。

答案 1 :(得分:0)

我绝对解决了我的问题。 我改变了security.yml

encoders:
        MOD\UserBundle\Entity\User:
            algorithm: sha512
            iterations: 1
            encode_as_base64: true

我用sha512和base64编码保存密码哈希。

有效!