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
tkad...@yandex.com
http://www.isotopesoftware.ca/

_______________________________________________
Web-SIG mailing list
Web-SIG@python.org
Web SIG: http://www.python.org/sigs/web-sig
Unsubscribe: 
https://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com

Reply via email to