2012-10-16 55 views
0

我有一個使用Sorcery進行認證的Rails 3.2.8應用程序。巫術提供了一個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負荷。但是,現在#create不起作用,因爲current_user在該操作中最終爲nil

那麼,爲什麼current_user當登錄的用戶發佈到此操作?我的猜測是有關會話通過SSL的方式,但我不知道我在這裏缺少什麼......

+0

我不知道巫術,但我假設有像身份驗證令牌或會話令牌或類似的東西?如果是這樣,它是否與每個請求一起發送?如果是這樣,它會不會改變? – Vapire

+0

我相信巫術使用會話令牌,說實話我不確定它是如何工作的。 – Andrew

+0

如果您可以在提交表單之前找到會話令牌,請查看瀏覽器中呈現的HTML代碼。如果什麼都沒有,我會說這是一個很好的機會,這是問題... – Vapire

回答

0

我想通了。事實證明,我實際上在與之交互的第三方庫中發現了一個無聲的異常,並且該異常導致了一個「未經授權」的請求,將用戶拒之門外。修補後,事實證明我的控制器沒有錯。感謝指針,所有。

+0

你能給我們提供一些關於如何修補它的更多細節嗎?我有同樣的問題。 – styliii

+0

已經過去了一年多了,說實話我不記得情況的細節。基本上,我在處理程序對象的某個地方出現了異常,並且有一個只是返回nil的救援,所以我得到了零和沒有錯誤信息。我想我會一行一行地通過控制流程,直到我找到了捕捉它不應該有的東西的救援,或者我改變了行爲以不再拯救,或者類似的東西。對不起,我不能更具體。祝你好運! – Andrew

相關問題