繁体   English   中英

URL中用于已验证Devise资源的Rails 3用户名密码

[英]Rails 3 username password in URL for authenticated Devise resource

我对为什么无法在浏览器中使用它感到困惑。 我想使用URL中具有用户名和密码的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

有什么想法吗?

Devise使用导航格式来确定验证时是否应发出401。 JSON和XML请求默认为401。 但是,HTML请求将重定向到登录名。 要解决此问题,请转到初始化程序中的devise.rb,取消注释此行并从数组中删除HTML:

config.navigational_formats = [:"*/*", "*/*"]

可能要研究从设计可验证的令牌。 这可能是通过dev即时将凭据传递出去的最有效方法。

可验证的令牌:基于身份验证令牌(也称为“单一访问令牌”)登录用户。 可以通过查询字符串或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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM