Rails:API - 设计:即使登录,current_user也返回nil

时间:2015-02-02 20:10:48

标签: ruby-on-rails api devise

我正在开发Rails API并使用Devise进行身份验证。 我正在通过curl命令测试登录和退出。

问题是current_user总是在其他控制器中返回nil,即使我已登录(使用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'Eccept:application / json'-X DELETE http://localhost:3000/api/v1/sessions/ \?auth_token \ = JRYodzXgrLsk157ioYHf

1 个答案:

答案 0 :(得分:0)

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

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

对于这个的简单实现,您可以检查#352 Securing an API - Railscasts(有点旧但仍然有效)。

或者,对于更安全的解决方案,您可以查看Doorkeeper gem