aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2012-07-11 01:56:38 +0200
committerPiotr Sarnacki <drogus@gmail.com>2012-07-11 01:56:38 +0200
commitdf40d79fdc376eae307830e1607ea7455e51280f (patch)
tree5a8ed721d6aee818b20ccb59b265a4754727f5d4 /actionpack/lib/action_controller
parentafa68eb1766d8893a1bb79bf989061f3d8f98049 (diff)
downloadrails-df40d79fdc376eae307830e1607ea7455e51280f.tar.gz
rails-df40d79fdc376eae307830e1607ea7455e51280f.tar.bz2
rails-df40d79fdc376eae307830e1607ea7455e51280f.zip
Don't raise an error if http auth token isn't well formatted
When someone sends malformed authorization header, like: Authorization: Token foobar given token should be just ignored and resource should not be authorized, instead of raising error. Before this patch controller would return 401 header only for well formed tokens, like: Authorization: Token token=foobar and would return 500 in former case.
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r--actionpack/lib/action_controller/metal/http_authentication.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/actionpack/lib/action_controller/metal/http_authentication.rb b/actionpack/lib/action_controller/metal/http_authentication.rb
index a0d1064094..0050ede806 100644
--- a/actionpack/lib/action_controller/metal/http_authentication.rb
+++ b/actionpack/lib/action_controller/metal/http_authentication.rb
@@ -436,10 +436,12 @@ module ActionController
values = Hash[$1.split(',').map do |value|
value.strip! # remove any spaces between commas and values
key, value = value.split(/\=\"?/) # split key=value pairs
- value.chomp!('"') # chomp trailing " in value
- value.gsub!(/\\\"/, '"') # unescape remaining quotes
- [key, value]
- end]
+ if value
+ value.chomp!('"') # chomp trailing " in value
+ value.gsub!(/\\\"/, '"') # unescape remaining quotes
+ [key, value]
+ end
+ end.compact]
[values.delete("token"), values.with_indifferent_access]
end
end