我很困惑为什么我不能在浏览器中使用它。我想使用URL中的用户名和密码来测试经过身份验证的Devise资源
http://joe:1234@localhost:3000/blog/latest
它不会进行身份验证,而是将我重定向到Devise登录页面。但是,如果我将它作为json调用,它可以正常工作
http://joe:1234@localhost:3000/blog/latest.json
如果我使用curl
curl http://joe:1234@localhost:3000/blog/latest
思想?
答案 0 :(得分:1)
Devise使用导航格式来确定在进行身份验证时是否应该发出401。默认情况下,JSON和XML请求将为401。但是,HTML请求将重定向到登录名。要解决此问题,请转到初始化程序中的devise.rb,取消注释此行并从数组中删除HTML:
config.navigational_formats = [:"*/*", "*/*"]
答案 1 :(得分:0)
可能希望从设计中查看可验证的令牌。这可能是使用设计开箱即可传递凭证的最有效方法。
令牌可验证:基于身份验证令牌(也称为“单一访问令牌”)在用户中签名。可以通过查询字符串或HTTP基本身份验证来提供令牌。
https://github.com/plataformatec/devise/
更深入,如果您需要一个可重复使用的策略,如本文所示,这里有一个方法:https://github.com/plataformatec/devise/wiki/How-To:-Use-HTTP-Authentication
Devise确实内置了HTTP基本身份验证,但您需要在应用中使用两件小东西才能使其正常工作:
* :database_authenticatable strategy in your user/account model
* config.http_authenticatable = true in the devise initializer