起初,我使用基本的http身份验证来验证用户,并遵循这个指南使用devise:http://jessehowarth.com/2011/04/27/ajax-login-with-devise。我成功地验证了一个用户,但是会话一直保持登录状态,没有办法销毁用户的会话。实际上,在我的create方法中添加了devise的user_signed_in?方法后,即使通过json退出登录,它也总是返回true。因此,我得出结论:使用基本的http身份验证无法结束会话。你只能检查用户是否已经登录并将状态代码作为json发送回客户端。
然后,我尝试了身份验证令牌路由,它允许你使用身份验证令牌创建会话,然后通过删除该身份验证令牌来销毁会话,并且用户必须重新登录才能访问需要身份验证的页面,如下所示:Devise and Authentication with CURL !。不足之处在于,您必须为每个需要身份验证的页面输入这个非常长的字符串,这似乎有点不理想。我希望有一种最佳的解决方案,就像在Web浏览器中一样可以登录和注销。
我不确定我所说的一切是否准确,但它似乎符合这篇文章的要求:http authentication in devise and rails 3。在那篇文章中,他说身份验证令牌比基本的http身份验证更安全,因为密钥可以过期。我认为他的意思是,一旦使用基本的身份验证登录,那就是全部,你永远都是登录状态,而身份验证令牌可以过期并强制用户重新登录。这个解释准确吗?
谢谢您的回复!
然后,我尝试了身份验证令牌路由,它允许你使用身份验证令牌创建会话,然后通过删除该身份验证令牌来销毁会话,并且用户必须重新登录才能访问需要身份验证的页面,如下所示:Devise and Authentication with CURL !。不足之处在于,您必须为每个需要身份验证的页面输入这个非常长的字符串,这似乎有点不理想。我希望有一种最佳的解决方案,就像在Web浏览器中一样可以登录和注销。
我不确定我所说的一切是否准确,但它似乎符合这篇文章的要求:http authentication in devise and rails 3。在那篇文章中,他说身份验证令牌比基本的http身份验证更安全,因为密钥可以过期。我认为他的意思是,一旦使用基本的身份验证登录,那就是全部,你永远都是登录状态,而身份验证令牌可以过期并强制用户重新登录。这个解释准确吗?
谢谢您的回复!
curl -H 'Content-Type: application/json' \ -H 'Accept: application/json' -X DELETE \ http://localhost:3000/users/sign_out \ -d '{"remote": "true", "commit": "Sign Out", "utf8": "✓", "user": {"remember_me": "1", "password": "password", "email": "email@email.com"}}' \ -c cookie
- Nils Landt