2012-10-16 5 views
0

인증을 위해 Sorcery를 사용하는 Rails 3.2.8 앱이 있습니다. Sorcery는 꽤 표준적인 방법 인 current_user을 제공합니다.현재 사용자가 하나의 컨트롤러 동작을 지속하지 않음

내 앱에 구독이 있습니다. 표준적인 방식으로 작동합니다. 다음은 컨트롤러의 축소 된 버전입니다 :

class SubscriptionsController < ApplicationController 
    before_filter :require_login 
    force_ssl 

    def show 
    @subscription = SubscriptionPresenter.new(current_user) 
    end 

    def create 
    handler = StripeHandler.new(current_user) 
    ... 
    end 

    def destroy 
    handler = StripeHandler.new(current_user) 
    ... 
    end 
end 

#show 조치는 잘, current_user 부하를 작동합니다. 그러나 current_user이 해당 작업에서 nil이되기 때문에 지금은 #create이 작동하지 않습니다.

따라서 로그인 한 사용자가이 작업에 게시하면 current_user이 (가) 사용하지 않는 이유는 무엇입니까? 내 생각 엔 세션이 SSL을 통해 작동하는 방식에 관한 것이지만 여기에 누락 된 내용을 모르겠습니다 ...

+0

나는 Sorcery를 모르지만 인증 토큰이나 세션 토큰 등이 있다고 가정하고 있습니까? 그렇다면 모든 요청과 함께 발송됩니까? 그렇다면 변경되거나 변경되지 않습니까? – Vapire

+0

나는 Sorcery가 세션 토큰을 사용한다고 믿는다. 솔직히 말해서 나는 그것이 어떻게 작동하는지 정확하게 알지 못한다. – Andrew

+0

폼 토큰이 도착하기 전에 세션 토큰을 찾을 수 있다면 브라우저의 렌더링 된 HTML 코드를 살펴보십시오. 거기에 아무것도 없다면 나는 이것이 문제라고 좋은 기회라고 말하고 싶습니다 ... – Vapire

답변

0

나는 이것을 알아 냈습니다. 내가 실제로 상호 작용하고 있던 제 3 자 라이브러리에서 침묵하는 예외를 실제로 얻고있는 것으로 밝혀졌습니다. 그리고 그 예외는 사용자를 로그 아웃 한 '인증되지 않은'요청을 유발하고있었습니다. 패치를 한 후에는 컨트롤러에 특별히 문제가 없었습니다. 모든 포인터에 감사드립니다.

+0

이 패치를 적용하는 방법에 대해 좀 더 자세히 설명해 주시겠습니까? 나는 똑같은 문제를 겪고있다. – styliii

+0

1 년이 넘었고 솔직히 말해서 상황의 세부 사항을 기억하지 못합니다. 기본적으로 핸들러 객체의 어딘가에서 예외가 발생했으며 대신 nil이 반환 된 구조가 있었기 때문에 오류 메시지가 표시되지 않았습니다. 내가해서는 안되는 것을 잡는 구조를 찾거나 더 이상 구출하지 않기 위해 행동을 바꾸거나 그와 비슷한 것을 찾을 때까지 나는 줄 단위로 제어 흐름을 따라 갔다. 미안하지만 나는 더 구체적 일 수 없다. 행운을 빕니다! – Andrew