Jaka jest różnica międzyJaka jest różnica między http_basic_authenticate_with a authenticate_or_request_with_http_basic?
http_basic_authenticate_with()
i
authenticate_or_request_with_http_basic()
metodami?
Dzięki za pełne wyjaśnienie.
Jaka jest różnica międzyJaka jest różnica między http_basic_authenticate_with a authenticate_or_request_with_http_basic?
http_basic_authenticate_with()
i
authenticate_or_request_with_http_basic()
metodami?
Dzięki za pełne wyjaśnienie.
Z tego co rozumiem z docs, http_basic_authenticate_with
działa jako przed filtrem, który przyjmuje nazwę i hasło takie jak
http_basic_authenticate_with :name => "dhh", :password => "secret", :except => :index
Zważywszy authenticate_or_request_with_http_basic akceptuje blok pozwala na wstawianie kodu w celu określenia, czy powinien być uwierzytelniony (documentation). Na przykład.
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
(Uważaj, ten przykład może nie być bezpieczne. Na przykład, obecnie jest to niebezpieczne, ponieważ używa secure_compare
zamiast variable_size_secure_compare
. Zobacz source code z http_basic_authenticate_with
w ActionController::HttpAuthentication
od bieżącej wersji Rails za bardziej bezpieczne przykład.)
Aby przetestować to z Capybara, zobacz http://stackoverflow.com/a/7938935/664833 – user664833
I ** do testowania na poziomie kontrolera **, użyj '@ request.env ['HTTP_AUTHORIZATION'] = 'Basic' + Base64 :: encode64 ("nazwa użytkownika: hasło") 'then' get: your_action'. Ref: http://apidock.com/rails/ActionController/HttpAuthentication/Basic/ControllerMethods/authenticate_or_request_with_http_basic#197- Testowanie-chronione-kontrolery – user664833
'http_basic_authenticate_with' faktycznie wywołuje' authenticate_or_request_with_http_basic' wewnętrznie. Zobacz [źródło] (https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/http_authentication.rb#L69). – mlovic