API を介したアプリケーションへのロギングに問題があります。POST /api/v1/users/sign_in でユーザーを認証し、パスワード付きの電子メールが有効な場合はこのユーザーのオブジェクトを返します。
ルート.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"=>"my_email@example.com"}}
Completed in 1ms
Processing by Api::V1::SessionsController#failure as
Parameters: {"user"=>{"password"=>"[FILTERED]", "email"=>"my_email@example.com"}}
Rendered text template (0.0ms)
私はすでに を使用:scope => :api_v1_user
してから POST データを提供しようとしましuser_v1_api
たが、これは役に立ちませんでした。サーバーのログは、上記のものとまったく同じように見えます。
メールアドレスとパスワードは間違いなく正しいです。なぜなら、パスを/api/vi/users/sign_in
から/users/sign_in
すべてに変更しても問題なくログインできるからです。