Symfony 登录中的角色未存储在安全上下文的用户中

Symfony 登录中的角色未存储在安全上下文的用户中,symfony,authentication,login,orm,doctrine,Symfony,Authentication,Login,Orm,Doctrine,在搜索了两天并尝试了许多不同的解决方案后,我找不到答案。我按照教程中的步骤构建了一个简单的登录过程,其中包括: 用户表格 角色表 它们之间的多对多关系用户角色。所有的mysql表都被正确创建,我也有ORM原则类 如果我手动加载一个用户并加载他们的角色,它工作得非常好,但是当我使用这个自动登录时 {% block body %} {% if error %} <div>{{ error.message }}</div> {% endif %} <form a

在搜索了两天并尝试了许多不同的解决方案后,我找不到答案。我按照教程中的步骤构建了一个简单的登录过程,其中包括:

用户表格 角色表 它们之间的多对多关系用户角色。所有的mysql表都被正确创建,我也有ORM原则类

如果我手动加载一个用户并加载他们的角色,它工作得非常好,但是当我使用这个自动登录时

{% block body %}
{% if error %}
    <div>{{ error.message }}</div>
{% endif %}

<form action="{{ path('login_check') }}" method="post">
    <label for="username">Usuario:</label>
    <input id="username" type="text" name="_username" value="{{ last_username }}" />
    <label for="password">Contraseña:</label>
    <input id="password" type="password" name="_password" />

    {#
    If you want to control the URL the user
    is redirected to on success (more details below)
    <input type="hidden" name="_target_path" value="/account" />
    #}

    <input type="submit" name="login" />
</form>
{% endblock %}
角色是空的。有什么想法吗

p.D:我尝试覆盖对象的序列化函数并包含角色,但没有成功。

只有几个问题:

您的用户实体是否扩展了Symfony\Component\Security\Core\User类? getRoles是否为每个角色返回一个带有字符串的数组?
也许您需要强制在构造函数中设置用户中的角色,因为如果您使用另一个实体来管理角色,那么您拥有的是角色对象,而不是标识角色的字符串数组。

顺便说一句,您下面的文章是从2011年开始的,可能正在使用Symfony 2.0,我认为您必须阅读最新版本的官方文档,我想Symfony的文档非常好。它实现以下Symfony\Component\Security\Core\User\UserInterface 2。是的,我修改了该函数,为每个角色返回一个带有字符串的数组。
$user = $this->get('security.context')->getToken()->getUser();
print_r(count($user->getRoles()))