전선에서 백본을 사용하고 백엔드에서는 루비 온 레일즈를 사용합니다. 내 인증을 위해 보석을 고안했습니다. 며칠 전 프론트 엔드 팀이 업무를 마쳤으며 이제는이 모든 것을 묶어야합니다. 그래서 나는 Started POST "https://stackoverflow.com/users/sign_in.json"
요청으로 json trough 백본 (표준 방식)으로 데이터를 보내려고하는데 protect_from_forgery except: :create
을 내 사용자 지정 세션 컨트롤러에 넣더라도 오류 Completed 401 Unauthorized in 180ms
가 표시됩니다. 내 <%= csrf_meta_tags %>
그래서 내가 웹에서 발견이 방법을 사용할 수 있습니다public/index.html 파일에서 <% = csrf_meta_tags %>를 생성하는 방법
class UserSessions::SessionsController < Devise::SessionsController
protect_from_forgery except: :create
......
end
방법이를 생략하거나, 내가 생성해야합니다 여기서 :이처럼
App.csrfToken = $("meta[name='csrf-token']").attr('content');
Backbone.sync = (function(original) {
return function(method, model, options) {
options.beforeSend = function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', App.csrfToken);
};
original(method, model, options);
};
})(Backbone.sync);
나는 표준이 다시 이동할 수 없습니다 왜냐하면 frontend가 require.js에 의존하는 백엔드와 별도로 작성 되었기 때문입니다.
csrf_meta_tags를 사용하여 프런트 엔드 어딘가에서 태그를 렌더링해야합니다. 어딘가에 자바 스크립트로 그들에게 갈 수 있습니다. – adriandz
질문은 '이 작업을 수행하는 방법'입니다. 내 공용 폴더에서 .erb 확장자를 사용할 수 없습니다. 그럴 경우, 내 레일/뷰가로드 중입니다 (( –
). 단지이 메시지를 세션 컨트롤러에 추가하여 CSRF 검사를 해제하십시오. skip_before_filter : verify_authenticity_token – adriandz