Symfony插件安装错误

时间:2013-03-07 05:42:00

标签: symfony symfony-2.2

我正在安装我从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错误。所以任何人都可以帮助我理解。

1 个答案:

答案 0 :(得分:0)

您在登录表单中错过了此<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" /> 每次请求都会生成 CSRF TOKEN ,并且应该是唯一的。这样,你(或者,在这种情况下,你的FOSUserBundle)可以阻止 CSRF攻击

FOSUserBundle为您生成它,但是,因为他希望在表单中发布它,您必须包含它

一点点说明

我也不确定你在这里要做什么。如果您想自定义FOSUserBundle登录表单的外观,您应该以正确的方式覆盖它 如果您找到更合适的方式,请查看this answer