marinus van aswegen
mvanaswegen at gmail.com
Mon Feb 27 03:36:31 EST 2006
Hi I'm experiencing some mod_python weirdness. I write a log in function that manages the user log in and session. The problem is that this function just manages the session and doesn't need to send anything to the browser. I read in the FAQ about the compulsive need by the handler to return something. I followed the recommendation in the FAQ but it's like the browser just goes into limbo .... it's like it just gets stuck ... reading data, I don't get any errors through, nothing in the logs either. I wrote a small test function to see whats up. Marinus Code example below: def validate_session(req): """ this function must be called prior to all function to ensure that the user is autenticated """ # get the session for this request session = Session.Session(req, secret = config.cookie_passwd) # is this req from a new session if session.is_new(): util.redirect (req, config.base_url + 'login.html') if session.has_key('auth'): if session['auth'] != True: util.redirect (req, config.base_url + 'login.html') return 1 def login (req, uid = None, passwd = None): """ connect to the database an authenticate the user """ session = Session.Session(req, secret = config.cookie_passwd) # does this session have counter? Maby a new client if not session.has_key ('count'): session['count'] = 0 session.save() #db_uid,db_passwd = mplib.db_query_one ('select uid,passwd from security') db_uid = 'test' db_passwd = 'test' if db_uid == uid and db_passwd == passwd: session['uid'] = db_uid session['count'] = 0 session['auth'] = True session.save() # the handler is obsessed with returning something, give it something req.content_type = 'text/plain' return apache.OK #raise apache.SERVER_RETURN, apache.OK else: session['count'] += 1 if session['count'] >= config.pass_fail: #session.invalidate() session.delete() util.redirect(req, config.base_url + 'logon_fail.html') session.save() util.redirect (req, config.base_url + 'login.html') def test(req): validate_session(req) session = Session.Session(req, secret = config.cookie_passwd) req.content_type = 'text/plain' req.write('hello world\n') req.write( 'welcome %d\n' % (session['uid'] )) return apache.OK -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mm_cfg_has_not_been_edited_to_set_host_domains/pipermail/mod_python/attachments/20060227/41a2d8ba/attachment.html
|