搜索了2天后嘗試了許多不同的解決方案,但找不到答案。我按照教程(http://roberto.costumero.es/2011/08/15/creando-un-login-simple-con-symfony2/)的步驟來建立一個簡單的登錄過程,其中我有:登錄中的角色未存儲在安全上下文的用戶
- 表用戶
- 表的角色
很多他們之間有很多關係(user_rol )。所有的mysql表都被正確地創建了,並且我也有ORM Doctrine Classes。
如果我加載通過手的用戶,並加載它們的角色是工作完全正常,但是當我在被識別的用戶使用該自動登錄
{% 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 %}
登錄後但在_profiler說一條警告消息「認證NO」(可能是因爲用戶沒有角色)
所以我做這個代碼:
$user = $this->get('security.context')->getToken()->getUser();
print_r(count($user->getRoles()))
而且角色是空的。有任何想法嗎?
P.D:我試着覆蓋對象的序列化函數幷包括角色,但它沒有工作。
順便說一句,你按照文章是從2011年,和也許是使用Symfony 2.0,我認爲你必須閱讀你的版本的官方文檔(最新我猜)http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form Symfony有一個非常好的文檔。 – mangelsnc 2014-11-04 15:46:10
1。它實現了以下Symfony \ Component \ Security \ Core \ User \ UserInterface 2.是的,我修改了該函數,爲每個角色返回一個包含字符串的數組。 – Javier 2014-11-04 16:03:41