2013-01-09 72 views
-2

奇怪的定義: 我的應用程序的會話模型似乎工作正常。 cookie(user.remember_token = SecureRandom.urlsafe_base64)已存儲,登錄仍然存在。生活很好。爲什麼我的Rails應用程序認爲我是CSRF?

但是,當用戶編輯他們的個人資料並點擊提交時,他們就會被註銷。

This SO Question讓我覺得Rails因爲XSRF而結束會話。

但是爲什麼?

相反張貼我都在這裏的代碼,一個環節得到了一切:https://github.com/chiperific/arcwmi_reports

幫助!

+0

@Vox,展現一位兄弟的一些愛! – Chiperific

+0

請不要鏈接到非現場代碼。正確的事情是在這裏發佈。如果您不能將其降低到合適的數量來發布問題本身,那麼您的問題不適合堆棧溢出 – meagar

+0

@meagar:OP不確定哪部分代碼與問題相關。在這種情況下,沒有太多的選擇...... – PinnyM

回答

1

你的問題是在User模式:

before_save :create_remember_token 

def create_remember_token 
    self.remember_token = SecureRandom.urlsafe_base64 
end 

這將修改當用戶保存在remember_token - 也就是說,用戶在創建或更新時。當用戶更新他/她的個人資料時,remember_token被更改。這會導致登錄系統注意到cookie不再與用戶匹配 - 並將用戶登出。

修復 - 使用before_create而不是before_save

+0

謝謝@PinnyM。注意到github鏈接。不會再發生! – Chiperific

相關問題