2014-12-04 3 views
1

Rails 3.0.0에서 Rails 3.2.21으로 이전 중입니다. 갑자기 우리는 사용자가 로그인하는 통합 테스트에서 InvalidAuthenticityToken을 경험하기 시작했습니다 (아래 참조).post_via_redirect에서 올바르지 않은 인증 함

post_via_redirect login_url, {:login => { :login => @user.login, :password => @user.password }

우리는 사용자 정의 인증 로직을 가지고 완벽하게 이전 작업을했다.

위의 호출에서 수동으로 authenticity_token을 전달하려고했지만 도움이되지 않습니다. 우리는 디버그를 시도하고 authenticity_token (SecureRandom.base64(32) 사용)을 전달하면 _csrf_token 값이 authenticity_token에 전달 된 값과 일치하지 않는 것으로 나타났습니다.

구성이 누락 되었습니까?

답변

1

authenticity_token에 대한 한 가지 방법을 정의하고이 오류가 발생한 곳이면 어디에서나 사용할 수 있습니다.

def set_form_authenticity_token 
    session[:_csrf_token] ||= SecureRandom.base64(32) 
end 

예. params.merge(authenticity_token: set_form_authenticity_token)