Rails:API:Devise:current_user nil

时间:2015-02-03 20:35:43

标签: ruby-on-rails api authentication devise

我正在开发Rails API并使用Devise进行身份验证。

当我在控制器中使用current_user时,它总是返回nil(好像没有登录用户),尽管用户已经登录。

为什么它在开发网站时起作用而在开发API时不起作用?

我使用curl命令来测试应用程序:

登录:

curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/api/v1/sessions -d "{\"user\":{\"email\":\"user1@example.com\",\"password\":\"secret123\"}}"   

退出:

curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X DELETE http://localhost:3000/api/v1/sessions/\?auth_token\=JRYodzXgrLsk157ioYHf

1 个答案:

答案 0 :(得分:2)

您是否命名了任何控制器?

即:

我有:

namespace:api,默认值:{format :: json} do

devise_for :users, controllers: {

  registrations: 'api/registrations',
  sessions:      'api/sessions'
}

在我的routes.rb

我想使用#current_user和#user_signed_in?设计所提供的方法,但不断变得“无”。和undefined_method错误

对命名空间进行了一些阅读,并意识到设计具有很多神奇的力量。由于我在api中命名了我的用户,因此生成了Devise:current_api_user& api_user_signed_in?我的方法。这些没有返回nil

您可以在此处详细了解: https://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb#L61