2014-06-26 211 views
3

我正在上記錄下面的錯誤在一個Symfony2的應用:的Symfony:身份驗證請求失敗:無效的CSRF令牌

[2014年6月27日0時36分22秒] security.INFO:認證請求失敗:無效的CSRF令牌。 [] []

運行於:

  • Symfony2的
  • SonataUserBundle
  • 流浪(使用經由Puphpet.com木偶)
  • Safari瀏覽器/ OSX

相同的設置正在使用Ubuntu主機系統。

感謝您的任何幫助。

security.yml:

firewalls: 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 

    secured_area: 
     pattern: ^/ 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: form.csrf_provider 
      login_path: fos_user_security_login 
      check_path: fos_user_security_check 
     logout: 
      invalidate_session : false 
      path: fos_user_security_logout 
     anonymous: true 
     switch_user: true 

應用/索納塔/ UserBundle /資源/視圖/安全/ login.html.twig

{% extends "FOSUserBundle::layout.html.twig" %} 

{% trans_default_domain 'FOSUserBundle' %} 

{% block fos_user_content %} 
{% if error %} 
    <div class="alert alert-danger"> 
     <button type="button" class="close" data-dismiss="alert">&times;</button> 
     {{ error|trans }} 
    </div> 
{% endif %} 

<form class="form-horizontal" action="{{ path("fos_user_security_check") }}" method="post"> 
    <fieldset> 
     <legend>Login</legend> 
     <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" /> 

     <div class="form-group"> 
      <label class="col-lg-2 control-label required" for="username">{{ 'security.login.username'|trans }}</label> 
      <div class="col-lg-5"> 
       <input type="text" id="username" name="_username" placeholder="Username" value="{{ last_username }}" required="required" class="form-control" /> 
      </div> 
     </div> 

     <div class="form-group"> 
      <label class="col-lg-2 control-label required" for="password">{{ 'security.login.password'|trans }}</label> 
      <div class="col-lg-5"> 
       <input type="password" id="password" name="_password" placeholder="Password" required="required" class="form-control" /> 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-lg-offset-2 col-lg-5"> 
       <input type="checkbox" id="remember_me" name="_remember_me" value="on" /> 
       <label for="remember_me">{{ 'security.login.remember_me'|trans }}</label> 
      </div> 
     </div> 

     <div class="form-group"> 
      <div class="col-lg-offset-2 col-lg-5"> 
       <a href="{{ path("fos_user_resetting_request") }}">{{ 'resetting.request.submit'|trans }}</a> 
       <input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" class="btn btn-primary form-control" /> 
      </div> 
     </div> 
    </fieldset> 
</form> 
{% endblock fos_user_content %} 

任何使用FOSUserBundle和SonataUserBundle

的其他
+0

你可以發佈一些代碼(你的登錄文件) – zizoujab

+0

當然,請參閱上文。 –

+0

輸入'_csrf_token'在獲取登錄頁面時是否有值? – zizoujab

回答

7

我現在可以解決我的問題。這似乎是在會話保存路徑上寫入權限的問題。如果我更改配置爲使用默認的會話保存路徑如下:

# app/config/config.yml 
framework: 
    session: 
     save_path: null 

然後/var/lib/php/session用來代替/var/www/myproject/app/cache/dev/sessions

權限上/var/www/crowdcustoms/app/cache/dev/sessions

drwxr-xr-x 4 501 dialout 136 Jun 29 20:37 sessions/ 

的權限上/var/lib/php/session

drwxrwxr-x 2 www-data www-data 4096 Jun 29 20:36 session 
+0

也 drwxrwxrwx 4 501 dialout 136 Jun 29 20:37會話/ 使用Symfonys會話保存路徑不起作用。 –

+0

這給我修好了。 –

+0

謝謝,通過清理'var/sessions'文件夾解決 – Eddie

相關問題