我是新來的rails。我正在嘗試爲使用JSON進行身份驗證的移動應用程序編寫API。我想使用Devise進行身份驗證。我相信Devise> 1.3也增加了對JSON的支持,但我無法找到任何示例或文獻。使用Devise 1.3來驗證JSON登錄請求
有人可以請我指點任何資源或提供一些示例代碼?
謝謝! 薩蒂揚
我是新來的rails。我正在嘗試爲使用JSON進行身份驗證的移動應用程序編寫API。我想使用Devise進行身份驗證。我相信Devise> 1.3也增加了對JSON的支持,但我無法找到任何示例或文獻。使用Devise 1.3來驗證JSON登錄請求
有人可以請我指點任何資源或提供一些示例代碼?
謝謝! 薩蒂揚
也許這一個>http://jessehowarth.com/devise?
我打算在一兩週內做同樣的事情。
當使用html格式響應時,Jesse Howarth的解決方案將打破瀏覽器的日誌記錄。如果你想既JSON和HTML工作的成才試試這樣:
class SessionsController < Devise::SessionsController
def create
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_to do |format|
format.html { respond_with resource, :location => after_sign_in_path_for(resource) }
format.json {
return render :json => { :success => true,
:user => resource
}
}
end
end
end
而且不要忘記更改航線使用該控制器
正如我上面評論的那樣,如果您使用的是Rails 3.1.0或更高版本,請自行推出。 – 2012-01-19 22:21:12
@Tombart,該方法正常工作正確的uid/pwd json登錄。如何處理錯誤密碼的情況?在userwarden.authenticate!()將剛剛吐出的HTML重定向使用純文本錯誤消息。 – GeorgeW 2012-08-10 16:03:11
我無法在鏈接頁面最好的答案,所以我想我會加我自己的。 您不需要創建任何自定義控制器。所有你需要做的是以下幾點:
在你的application.rb中加入下面的應用程序類
config.to_prepare do
DeviseController.respond_to :html, :json
end
在配置/初始化/ devise.rb :json
添加到格式。該行默認註釋掉,因此您需要取消該行的註釋。
config.navigational_formats = ['*/*', :html, :json]
在此之後,你可以發送一個JSON對象sign_in.json或任何你已經在你的路線登錄設置。
{
"user": {
"email": "[email protected]",
"password": "blah"
}
}
成功後,它將返回201創建,並將登錄用戶作爲JSON對象返回。出錯時,它將返回401並顯示JSON消息,指出失敗的原因。
實施例:
{"error":"Invalid email or password."}
這裏是如果使用的是主鏈上的很好的例子/ Marionntte上的前端。
非常感謝!這有幫助。 – Satyam 2011-05-23 07:15:25
爲了記錄,我最終在Devise + JSON方面遇到了很多麻煩。我建議使用Rails 3.1的has_secure_password並添加自己的自定義功能。 – 2011-09-22 11:40:09
詛咒!我們無法找到該頁面。 – tambykojak 2014-04-27 09:02:03