Devise确实内置了,HTTP Basic Authentication
但您确实需要在您的应用程序中添加两个小东西才能使其正常工作:
:database_authenticatable
config.http_authenticatable = true
设计初始化程序中的用户/帐户模型中的策略
设计依赖Warden
,这是一个用于身份验证的机架框架。就其本身而言,Warden
尝试通过名为 failure_app 的东西(一个有效的机架应用程序)为所有未经身份验证的请求提供自定义响应。
一个执行http认证的简单代码如下:
def http_authenticate
authenticate_or_request_with_http_digest do |user_name, password|
user_name == "foo" && password == "bar"
end
warden.custom_failure! if performed?
end
还有一个很好的帖子。在这里检查。
另一种解决方案(替代方案)是使用Mechanize 库
require 'rubygems'
require 'mechanize'
require 'logger'
agent = WWW::Mechanize.new { |a| a.log = Logger.new("mech.log") }
agent.user_agent_alias = 'Windows Mozilla'
agent.auth('username', 'password')
agent.get('http://example.com') do |page|
puts page.title
end