【问题标题】:How to configure security.yml如何配置 security.yml
【发布时间】:2014-02-09 21:07:01
【问题描述】:

我的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

【问题讨论】:

  • 检查您是否在对密码进行哈希处理时设置了一些盐。还要检查您的 password 字段的长度(散列密码可能很小)
  • 我将salt 设置为''。我的密码是 admin 所以哈希是C7AD44CBAD762A5DA0A452F9E854FDC1E0E7A52A38015F23F3EAB1D80B931DD472634DFAC71CD34EBC35D16AB7FB8A90C81F975113D6C7538DC69DD8DE9077EC
  • 你的密码在数据库中的长度?
  • 最大长度固定为255
  • emm 你能在检索用户之前发布你的实体和你在数据库中存储用户的逻辑吗?

标签: php security symfony login routing


【解决方案1】:

感谢齐祖贾布。 既然你问了我很多关于密码和在我的数据库中存储密码的方法的问题,我最终在我的security.yml 中用plaintext 替换了sha512。 然后我尝试使用以下方式登录: maxime / C7AD44CBAD762A5DA0A452F9E854FDC1E0E7A52A38015F23F3EAB1D80B931DD472634DFAC71CD34‌​EBC35D16AB7FB8A90C81F975113D6C7538DC69DD8DE9077EC 它有效。

【讨论】:

  • 以纯文本形式存储密码不安全!
  • 当然!我知道,我不想这样做。这只是为了尝试。现在,我知道这是哈希的问题,所以我会搜索如何解决它。
【解决方案2】:

我确实解决了我的问题。 我像这样更改security.yml

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

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

有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多