Prevent to get user_id from request without view_args

If user_id is accessed before view_args has been setup, we should not cache
`None` as value but instead raise an exception.
The `user_id` may be accessed before the mapping if the request is logged
because the representation of the request used the `rpc_method` which needs to
parse the request data. But since 1923117e935d parsing compressed content is
only allowed for request with `user_id`.
So we can no more include the `rpc_method` is the request has not yet been
mapped and so it has a `view_args`.

Closes #13203
This commit is contained in:
Cédric Krier committed 2024-04-18 19:28:04 +02:00
1 parent 2500e09ce2
commit cd816227b3
1 file changed
+3 -3
+3 -3
View File
@@ -63,7 +63,8 @@ class Request(_Request):
args.append(self.remote_addr)
args.append("'%s'" % url)
args.append("[%s]" % self.method)
args.append("%s" % (self.rpc_method or ''))
if self.view_args:
args.append("%s" % (self.rpc_method or ''))
except Exception:
args.append("(invalid WSGI environ)")
return "<%s %s>" % (
@@ -110,8 +111,7 @@ class Request(_Request):
@cached_property
def user_id(self):
if not self.view_args:
return None
assert self.view_args is not None
database_name = self.view_args.get('database_name')
if not database_name:
return None