Symfony2中提供的用户无法登录

时间:2015-08-18 18:11:51

标签: php security symfony

我正在按照一些教程和文档进行操作,但是我无法在security.yml中让我提供的用户登录。这是我的YML文件,它提供了一个名为user的用户名和一个密码userpass,简单用户。

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

    encoders:
        Symfony\Component\Security\Core\User\User: sha512

    providers:
        in_memory:
            memory:
                users:
                    user: { password: userpass, roles: ROLE_ADMIN }

    firewalls:
        secured_area:
            anonymous: ~
            pattern: ^/
            form_login:
                check_path: /login_check
                login_path: /login
            logout:
                path: /logout
                target: /

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

    access_control:
        - { path: ^/new, roles: ROLE_ADMIN }
        - { path: ^/create, roles: ROLE_ADMIN }
        - { path: ^/edit, roles: ROLE_ADMIN }
        - { path: ^/delete, roles: ROLE_ADMIN }
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }

loginAction与官方文档相同:

public function loginAction()
{
    $authUtils = $this->get('security.authentication_utils');

    $error = $authUtils->getLastAuthenticationError();

    $lastUsernme = $authUtils->getLastUsername();

    return $this->render('UserBundle:Login:login.html.twig', array(
        'last_username' => $lastUsernme,
        'error' => $error
    ));
}

我不知道我应该在这里粘贴什么,因为每个视图,控制器和路线都能完美运行。唯一的问题是,每当我尝试使用该用户和密码登录时,都会显示“BAD CREDENTIALS”消息。

2 个答案:

答案 0 :(得分:0)

This shows you完整的例子。

您可以关注SecurityController和示例中的security.yml文件,然后找出您在应用程序中缺少的其他内容。

示例security.yml

security:
    encoders:
        Symfony\Component\Security\Core\User\User:
            algorithm: bcrypt
            cost: 12

    providers:
        in_memory:
            memory:
                users:
                    basic:
                        password: $2a$12$Mnp6eUx1AJ5YABwmprcu/OHo21klIpQ/PA7D7PdKx5SA4urdav6/e  #basic
                        roles: ROLE_USER
                    admin:
                        password: $2a$12$aRC0GRcjZS9bXfQYlpT8f.JkkrwuK0xZwKuoQ78i1CsErbHtriWLm  #admin
                        roles: ROLE_ADMIN
                    super:
                        password: $2a$12$7SeyjOot3/3Ez1c0Dm8W0u/EenNEs8ykOl16D5aKkJkzLEq4lvXP2  #super
                        roles: ROLE_SUPER_ADMIN

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

        default:
            anonymous: ~
            http_basic: ~
            form_login:
                login_path: /login
                check_path: /login
            logout:
                invalidate_session: true
                path: /logout
                target: /

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

    access_control:
        - { path: ^/backend/superadmin, role: ROLE_SUPER_ADMIN }
        - { path: ^/backend/secret, role: ROLE_SUPER_ADMIN }
        - { path: ^/backend, role: ROLE_ADMIN }
        - { path: ^/country, role: ROLE_USER }
        - { path: ^/, role: IS_AUTHENTICATED_ANONYMOUSLY }

答案 1 :(得分:0)

只需使用纯文本编码器即可以“userpass”登录(请看下面的示例) 或者您可以将“userpass”编码为sha512并将“userpass”替换为结果

encoders:
    Symfony\Component\Security\Core\User\User: plaintext
相关问题