[Web-SIG] How to make REMOTE_USER variable private across WSGI middlewares?
Etienne Robillard
tkadm30 at yandex.com
Fri Aug 11 06:43:11 EDT 2017
I fixed this bug! :)
My application logic was causing a redirect loop in the oauth2
authentication mecanism.
Have a nice day,
E
Le 2017-08-10 à 06:25, Etienne Robillard a écrit :
> Hi,
>
> A little update on this issue. I switched to werkzeug/gevent for
> storing the http request in a thread-local object. I also use a
> contextmanager to set the current request for a thread. However, since
> the value of REMOTE_USER is set from a WSGI middleware, it doesn't
> persist into my thread-local request object.
>
> Here's my code:
>
> @contextmanager
> def sessionmanager(environ):
> _requests.request = RequestClass(environ)
> yield
> _requests.request = None
>
> def get_current_request():
> try:
> return _requests.request
> except AttributeError:
> raise TypeError("No request object for this thread")
>
>
> request = LocalProxy(lambda: get_current_request())
>
> [...]
>
> def application(self, environ, start_response):
> self._session.environ.update(environ)
> with sessionmanager(self._session.environ):
> response = self.get_response(request=request)
> try:
> return response(self._session.environ, start_response)
> finally:
> _requests.request = None
> #self._session.environ.clear()
>
>
> Any suggestions how to improve this code to allow the value of
> REMOTE_USER to persist if and only if the user has been authenticated ?
>
> Thank you in advance,
>
> Etienne
>
>
> Le 2016-10-12 à 05:42, Etienne Robillard a écrit :
>> I believe the OAuth2 middleware and client is functioning correctly
>> and is setting the REMOTE_USER value as expected. But I guess the
>> problem is because I recreate a new WebOb request object before
>> returning a WSGI response. Also, I need to update the WSGI
>> environment for each request in order to preserve the value of
>> REMOTE_USER. However, i don't know if it's logical to recreate a WSGI
>> request every time. Perhaps the solution would be to use a global
>> request object...
>>
>
--
Etienne Robillard
tkadm30 at yandex.com
http://www.isotopesoftware.ca/
More information about the Web-SIG
mailing list