小编Aks*_*mar的帖子

扩展Devise SessionsController以使用JSON进行身份验证

我正在尝试为iPhone应用程序构建rails API.Devise适用于通过Web界面登录,但我需要能够使用REST API创建和销毁会话,我想使用JSON而不必在会话控制器上执行POST并且必须解析HTML并处理重定向.

我以为我可以这样做:

class Api::V1::SessionsController < Devise::SessionsController  
  def create
    super
  end  
  def destroy
    super
  end  
end
Run Code Online (Sandbox Code Playgroud)

在config/routes.rb中我添加了:

namespace :api do
  namespace :v1 do
    resources :sessions, :only => [:create, :destroy]
  end
end
Run Code Online (Sandbox Code Playgroud)

rake路由显示路由设置正确:

   api_v1_sessions POST   /api/v1/sessions(.:format)     {:action=>"create", :controller=>"api/v1/sessions"}
    api_v1_session DELETE /api/v1/sessions/:id(.:format) {:action=>"destroy", :controller=>"api/v1/sessions"}
Run Code Online (Sandbox Code Playgroud)

当我发布到/ user/sessions时,一切正常.我得到一些HTML和302.

现在如果我发布到/ api/v1/sessions我得到:

未知的操作AbstractController :: ActionNotFound

curl -v -H 'Content-Type: application/json' -H 'Accept: application/json'   -X POST http://localhost:3000/api/v1/sessions   -d "{'user' : { 'login' : 'test', 'password' : 'foobar'}}"
Run Code Online (Sandbox Code Playgroud)

ruby authentication ruby-on-rails devise

47
推荐指数
4
解决办法
3万
查看次数

标签 统计

authentication ×1

devise ×1

ruby ×1

ruby-on-rails ×1