2011-08-08 34 views
4

我正在修復需要支持重複登錄請求的應用程序發送到服務器(對於設計)。請求通過JSON發送。目前,如果我撥打以下不止一次:設計句柄重複登錄請求

curl -v -b cookie.file -c cookie.file -H "Content-Type: application/json" -X POST -d '{"user":{"username":"kevin","password":"password"}}' http://localhost:3000/users/sign_in.json 

201狀態碼的第一個結果和第二導致302重定向到一個HTML頁面。我已經覆蓋了Users::SessionsController中的創建方法,但只在第一次POST時調用自定義代碼(第二次沒有任何事情發生)。任何方式來獲得第二個請求不執行重定向?這是我到目前爲止:

class Users::SessionsController < Devise::SessionsController 
    def create 
    logger.info "Users::SessionController" 
    super 
    end 
end 

回答

2

我在這裏結束了,因爲我有同樣的問題。非導航格式的登錄不是冪等性的,因爲我已被重定向到html版本,如果我已經過身份驗證。

此問題已得到解決。截至9月29日與this commit.

截至今天,你必須使用邊緣色器件得到它與你的應用程序的工作。

# Gemfile 
gem 'devise', git: 'git://github.com/plataformatec/devise.git' 
0

重寫SessionsController不像其他東西在Devise一樣無縫。我認爲你要求的是非常相似的this article。這可能並不準確,但它涉及如何創建純JSON登錄環境。

+0

我的SessionsController創建操作沒有在第二次調用時被調用(即覆蓋它不工作)。任何其他想法? –

+0

在那篇文章中,他提到了這些指令:'config.http_authenticatable_on_xhr = false' 'config.navigational_formats = [:html,:json]'。我目前無法做實驗,但似乎是停止http認證請求(可能還有路由轉發)。 – drharris

+0

另外,查看Devise的源代碼,您可以嘗試使用GET而不是POST。而[此線程](http://groups.google.com/group/plataformatec-devise/browse_thread/thread/badf166a8af3bd63/9e18eed786213fc5)是一個很好的討論人們遇到的類似問題。 – drharris