Ruby on rails Rails:API-designe:current_用户即使登录也返回nil

Ruby on rails Rails:API-designe:current_用户即使登录也返回nil,ruby-on-rails,api,devise,Ruby On Rails,Api,Devise,我正在开发一个Rails API并使用Desive进行身份验证。 我正在通过curl命令测试登录和注销 问题是当前用户在其他控制器中总是返回nil,即使我使用curl命令登录 Curl命令: Sign in : curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/api/v1/sessions -d "{\"user\":{\

我正在开发一个Rails API并使用Desive进行身份验证。 我正在通过curl命令测试登录和注销

问题是当前用户在其他控制器中总是返回nil,即使我使用curl命令登录

Curl命令:

Sign in :        
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\?auth_token\=JRYodzXgrLsk157ioYHf

我认为您的方法不正确。Deviate的当前用户方法取决于保存在浏览器上的cookie,以指示用户是否已登录

我建议您使用另一种方法,比如为每个用户生成一个令牌,并将其与每个请求一起发送。您可以创建一个接受用户电子邮件和密码的身份验证端点,并在凭据有效的情况下为此用户生成特定的令牌。然后,在所有需要用户登录的请求中,您应该发送此令牌以及任何其他参数

对于这个简单的实现,您可以检查有点旧但仍然有效


或者,您可以查看更安全的解决方案。

请发布您正在使用的cURL命令。登录:cURL-v-H'内容类型:application/json'-H'Accept:application/json'-X post-d{\user\:{\email\:\user1@example.com\,\password\:\secret123\}'Sign out:curl-v-H'Content Type:application/json'-H'Accept:application/json'-X DELETE\?auth_token\=jryodzxgrlsk157ioyhft Rails知道您已登录的唯一方法是您的请求是否包含您登录时服务器发送给您的cookies。您需要告诉cURL记录这些cookies,并将它们与后续请求一起发送。请参阅man curl中的-cookie jar选项。它不起作用