ruby-on-rails – Rails 3 – 基本的http身份验证与使用iphone的身份验证令牌

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails 3 – 基本的http身份验证与使用iphone的身份验证令牌前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
最初我使用基本的http身份验证来按照本指南对设计用户进行身份验证:

http://jessehowarth.com/2011/04/27/ajax-login-with-devise

我成功地验证了用户,但会话仍然永远登录.没有办法破坏用户的会话.事实上,当我添加user_signed_in?在我的create方法中设计的方法,即使通过json注销也总是返回true.所以我得出结论,没有办法使用基本的http身份验证结束会话.您所能做的就是检查用户是否已登录并将状态代码作为json发送回客户端.

然后我尝试了身份验证令牌路由,它允许您使用身份验证令牌创建会话,然后通过删除该身份验证令牌来销毁会话,并且用户必须再次登录才能访问需要身份验证的页面,如在这篇文章显示

Devise and Authentication with CURL !

这样做的缺点是,您需要为每个需要身份验证的页面输入这个非常长的字符串,这似乎有点不合需要.我希望这里有两个世界中最好的,你可以像在网络浏览器中一样登录退出.

我不确定我所说的一切是否准确,但似乎与这篇文章一致:

http authentication in devise and rails 3

在那篇文章中,他说身份验证令牌“比http基本身份验证更安全,因为密钥可能会过期”.我认为他的意思是,一旦您使用基本身份验证登录,那就是它,您将永远登录,而身份验证令牌可以使其过期并强制用户再次登录.这是准确的解释吗?

谢谢你的回复

解决方法

HTTP身份验证的工作方式,一旦浏览器登录(即发送WWW-Authenticate标头),它将保持登录状态,直到其HTTP身份验证缓存过期(通常在您退出浏览器时).

由于浏览器继续在HTTP身份验证中发送有效凭据(没有“HTTP注销”),这就是您看到用户仍然登录的原因.

我的建议是在Devise中使用authentication_token功能并将?auth_token传递给您的API.请记住,即使它是POST / DELETE / PUT /等,您也必须将它们作为URL的一部分传递. (这是一个可能现在修复的Devise bug).

猜你在找的Ruby相关文章