[mod_python] Session.Session(req) not finding saved session

Will Gray graywh at gmail.com
Tue May 1 15:49:44 EDT 2007


On 5/1/07, Jim Gallacher <jpg at jgassociates.ca> wrote:
>
> Will Gray wrote:
> > I'm running Apache 2.2.3 and Mod_Python 3.2.10.  I'm using
> > Mod_Python.Publisher to handle requests.  When I upgraded Apache from
> > 2.0 to
> > 2.2 (and Mod_Python, accordingly), I was no longer able to get the saved
> > session when a visitor changes pages.  Instead, it creates and returns a
> > new
> > session.  I was able to verify that the session was still available and
> > being saved correctly with the data inside.  Here is a sample of what my
> > views are doing:
> >
> > def login(req):
> >    sess = Session.Session(req)
> >    userid = sess.get('uid', None)
> >    if userid:
> >        util.redirect(req, 'view')
> >    ##get username and password from req.form and authenticate against
> db##
> >    if uid:
> >        sess['uid'] = uid
> >        sess.save()
> >        util.redirect(req, 'view')
> >    else:
> >        ##display the login form##
> >
> > def view(req):
> >    sess = Session.Session(req) # creates a new session instead of
> finding
> > the old one
> >    userid = sess.get('uid', None)
> >    if not userid:
> >        util.redirect(req, 'login')
> >    ##do some db queries and display the page##
>
> I don't see an immediate problem with the code snippet, but given the
> redirecting back and forth I think the potential is there for things to
> get out of order.
>
> Try tracing through your execution path again and make sure the session
> is indeed being saved at the appropriate time.
>
> Also remember that your session instance must be created *before*
> returning any output to the client. The first call to req.write()
> flushes the response headers. Once that happens it's too late to create
> the session object - you can still create it and save it, but the
> session cookie will not be sent to the client, so you'll end up with at
> new session for every request. Typically this results in the behaviour
> you are seeing - the session data gets saved, but you always end up with
> a new session.
>
>
I've read everything about making sure sessions are created before req.write()
and know that is not the problem.  The cookie is there in the client web
browser with the correct "pysid" value for the session id.

Since everything worked fine before upgrading Apache from 2.0 to 2.2 it
makes me think there is something wrong with that or mod_python.

-- 
Will Gray
Nashville, TN
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mm_cfg_has_not_been_edited_to_set_host_domains/pipermail/mod_python/attachments/20070501/c4247bba/attachment.html


More information about the Mod_python mailing list