什么是两者之间的区别?
http_basic_authenticate_with()
和
authenticate_or_request_with_http_basic()
方法?
感谢您的详细说明。
什么是两者之间的区别?
http_basic_authenticate_with()
和
authenticate_or_request_with_http_basic()
方法?
感谢您的详细说明。
根据文档,http_basic_authenticate_with
作为一个before过滤器,接受一个名称和密码,例如:
http_basic_authenticate_with :name => "dhh", :password => "secret", :except => :index
而 authenticate_or_request_with_http_basic 接受一个块,允许您插入一些代码来确定是否应该进行身份验证 (文档)。例如:
before_filter :authenticate
def authenticate
authenticate_or_request_with_http_basic('Administration') do |username, password|
ActiveSupport::SecurityUtils.secure_compare(username, "admin") &&
ActiveSupport::SecurityUtils.secure_compare(password, "password")
end
end
@request.env['HTTP_AUTHORIZATION'] = 'Basic ' + Base64::encode64('username:password')
然后get :your_action
。参考:http://apidock.com/rails/ActionController/HttpAuthentication/Basic/ControllerMethods/authenticate_or_request_with_http_basic#197-Testing-protected-controllers - user664833http_basic_authenticate_with
实际上在内部调用了authenticate_or_request_with_http_basic
。请参见源代码。 - mlovic