我正在安装我从Knpbundle下载的FOSUserBundle
。
我已按照给出的指示正确配置了它。
我创建了一条路线,所以我的'app/config/routing.yml'
如下所示。
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /profile
acme_user:
resource: "@AcmeUserBundle/Resources/config/routing.yml"
prefix: /
我的routing.yml文件如下所示。
AcmeUser_Bundle:
pattern: /admin
defaults: { _controller: AcmeUserBundle:User:index}
只要我在我的网址中传递/admin
,它就会调用我创建的索引文件视图。index
文件看起来像这样。
<body>
<section id="login_form">
<div class="login_form_head">Administration</div>
<form id="admin_login_form" class="formee" method="post" action="{{
path('fos_user_security_check') }}" enctype="multipart/form-data">
<div class="login_form_display">
<div class="login_row"><input type="text" name="_username"
class="validate[required,custom[username]]" id="username"
placeholder="Username" /></div>
<div class="clear"></div>
<div class="login_row"><input type="password" class="validate[required,custom[passwordLogin]]"
name="_password" id="password" placeholder="Password" /></div>
<div class="clear"></div>
</div>
<!--Form footer begin -->
<section class="login_footer">
<div class="textcenter"><input type="submit" value="Login" /></div>
<div class="clear"></div>
</section>
<!--Form footer end -->
</form>
</section><!-- End of #container -->
<div>
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
{{ 'layout.logged_in_as'|trans({'%username%': app.user.username}, 'FOSUserBundle') }} |
<a href="{{ path('fos_user_security_logout') }}">
{{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
</a>
{% else %}
<a href="{{ path('fos_user_security_login') }}">{{ 'login'|trans({}, 'FOSUserBundle') }}</a>
{% endif %}
</div>
{% for type, messages in app.session.flashbag.all() %}
{% for key, message in messages %}
<div class="flash-{{ type }}">
{{ message|trans({}, 'FOSUserBundle') }}
</div>
{% endfor %}
{% endfor %}
<div>
{% block fos_user_content %}
{% endblock fos_user_content %}
</div>
</body>
它显示csrfToken
错误。所以任何人都可以帮助我理解。
答案 0 :(得分:0)
您在登录表单中错过了此<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
每次请求都会生成 CSRF TOKEN ,并且应该是唯一的。这样,你(或者,在这种情况下,你的FOSUserBundle)可以阻止 CSRF攻击。
FOSUserBundle为您生成它,但是,因为他希望在表单中发布它,您必须包含它
我也不确定你在这里要做什么。如果您想自定义FOSUserBundle登录表单的外观,您应该以正确的方式覆盖它 如果您找到更合适的方式,请查看this answer