我有通過API登錄到我的應用程序的問題。我想通過POST/api/v1/users/sign_in來認證用戶,並在密碼有效的電子郵件中返回此用戶的對象。設計命名空間內的路由助手 - warden.authenticate的問題!
的routes.rb
devise_for :users
...
namespace :api do
namespace :v1 do
devise_scope :user do
post 'users' => 'registrations#create', :as => 'user_registration'
post 'users/sign_in' => 'sessions#create', :as => 'user_session'
end
end
end
控制器/ API/V1/sessions_controller.rb
class Api::V1::SessionsController < Devise::SessionsController
def create
resource = warden.authenticate!(:scope => resource_name, :recall => 'api/v1/sessions#failure')
render :json => resource
end
def failure
render :text => 'not good', :status => 401
end
end
問題是,用戶永遠不會認證。它甚至沒有從數據庫中選擇。這是我的本地服務器日誌:
Started POST "/api/v1/users/sign_in" for 127.0.0.1 at Tue Jul 12 11:46:55 +0200 2011
SQL (0.6ms) SHOW TABLES
Processing by Api::V1::SessionsController#create as
Parameters: {"user"=>{"password"=>"[FILTERED]", "email"=>"[email protected]"}}
Completed in 1ms
Processing by Api::V1::SessionsController#failure as
Parameters: {"user"=>{"password"=>"[FILTERED]", "email"=>"[email protected]"}}
Rendered text template (0.0ms)
我已經嘗試使用:scope => :api_v1_user
,然後給POST數據爲user_v1_api
,但這並沒有幫助。 Sever日誌看起來和上面的這個完全一樣。
電子郵件和密碼是絕對正確的,因爲當我改變從/api/vi/users/sign_in
到/users/sign_in
一切路徑是確定的,我登錄。