Ruby on rails Rails:API:designe:current_用户无

Ruby on rails Rails:API:designe:current_用户无,ruby-on-rails,api,authentication,devise,Ruby On Rails,Api,Authentication,Devise,我正在开发一个Rails API并使用Desive进行身份验证 当我在控制器中使用current_user时,它总是返回nil(好像没有登录用户),尽管用户已经登录 为什么它在开发网站时起作用,而在开发API时不起作用 我正在使用curl命令测试应用程序: 登录: curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/api/v1/sessio

我正在开发一个Rails API并使用Desive进行身份验证

当我在控制器中使用
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

你有没有给你的控制器命名

即:

我有:

名称空间:api,默认值:{format::json}do

devise_for :users, controllers: {

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

在my routes.rb中

我想使用#当前#用户和#用户#登录?Desive假设提供了,但不断得到“nil”和未定义的_方法错误的方法

读了一些关于名称空间的书,意识到Desive有很多神奇的力量。因为我在一个api中给我的用户命名了名称空间,所以设计生成:当前api用户和api用户登录?我的方法。这些并没有返回零

您可以在此处阅读更多信息:

您是否将会话cookie与后续api请求一起发送回?HTTPie是测试api的一个很好的工具