Symfony 2 Guard组件和普通登录表单

4
我正在尝试使用新的Guard组件。我找到的唯一信息是官方文档
文档中的示例使用Guard来验证API请求。
根据文档,它也可以与普通登录表单一起使用,这正是我想要做的。
我复制了那个示例并替换了两个函数:
public function getCredentials(Request $request)
{
    return array(
        'username' => $request->request->get('_username'),
        'password' => $request->request->get('_password'),
    );
}

public function getUser($credentials, UserProviderInterface $userProvider)
{
    $email = $credentials['username'];

    $user = $this->em->getRepository('Entity\User')
        ->findOneBy(array('email' => $email));

    return $user;
}

security.yml:

providers:
    user_provider:
        entity:
            class: Entity\User
            property: email

firewalls:
    user:
        switch_user: { role: ROLE_ADMIN }
        pattern:  ^/
        anonymous: ~
        provider: user_provider
        form_login:
            check_path: login_check
            login_path: login
        logout:
            path:   logout
            target: login
        guard:
            authenticators:
                - app.ldap.authenticator
        stateless: false

问题在于Symfony不能持久化我的会话。
只有在每个请求中发送数据表单时,我才能登录。是否可能仅发送一次此数据,就像普通的登录表单一样?
1个回答

1
我找到了。在security.yml文件中。
always_authenticate_before_granting:  true

从另一个项目复制过来的:)。我删除了它,现在它可以工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接