我正在开发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
答案 0 :(得分:0)
我认为你的方法不正确。设计current_user
方法取决于保存在浏览器上的cookie,以指示用户是否已登录。
我建议你使用另一种方法,比如为每个用户生成一个令牌并将其与每个请求一起发送。您可以创建一个带有用户电子邮件和密码的身份验证端点,并在凭据有效时生成特定于此用户的令牌。然后,在所有需要用户登录的请求中,您应该发送此令牌以及任何其他参数。
对于这个的简单实现,您可以检查#352 Securing an API - Railscasts(有点旧但仍然有效)。
或者,对于更安全的解决方案,您可以查看Doorkeeper gem。