[Zope-dev] logout and IE6 problems
Aseem Mohanty
aseem@neurobehavioralsystems.com
Mon, 03 Jun 2002 05:58:58 -0700
Hi All,
Pardon the cross post, since I dont know where exactly my problems lie...
I am running Zope 2.5.0 (binary release, python 2.1, win32-x86), python
2.1.2, win32 on a Win2k machine with a MySQL server. I just wrote my
first UserFolder based on the mysqlUserFolder product, but with some
customized stuff to suit my needs. I basically did not use
mysqlUserFolder's session and cookie management and instead, am using
ZSession for session management.
Finally after several days work I have everything running, barring two
problems, one doesnt matter much, the other is a gift of the evil empire
which I havent figured out as yet.
The first problem: For logout purposes I used the function that handles
the logout in ZMI and call it from a form; the function is as follows:
def user_logout (Self, REQUEST,RESPONSE):
""" Terminates user session """
user = Self.check_valid_mysql_user (REQUEST)
Self.__terminate_session(REQUEST)
realm=RESPONSE.realm
RESPONSE.expireCookie('__ac',path='/')
RESPONSE.expireCookie('_ZSession',path='/')
RESPONSE.setStatus(401)
RESPONSE.setHeader('WWW-Authenticate', 'basic realm="%s"' %
realm, 1)
RESPONSE.setBody("""<html>
<meta http-equiv="refresh" content="0;
URL=http://xxxx:8080/test_folder/logged_out">
<head><title>Logout</title></head>
<body><p>You have been logged out.</p>
</body></html>""")
return
It basically does the job beutifully and I have no problems. What I
would like to do however is to be able log back in when prompted for a
login and password as a result of this call. I tested the ZMI interface
and it does the same too : once you log-out you have to cancel the
prompt box and then try and access a protected resource to get logged
back in. I tested the control flow and as a matter of fact when I enter
the right username/password combo it goes through 'validate' and
authenticates it all right but just doesn't accept it and sends another
401. Any ideas as to hwo to get around that would be great....!!
The second problem: All of the above works nicely with all versions of
Netscape. On IE versions 5.01 and above however, it behaves
exceptionally badly. In that I can login and a nice little session
variable is created, and the cookies are set up, and when I log out, the
sessions are cleared and cookies thrown out and I get prompted to log in
which if I cancel, I get booted to the logged out page. All nice and clean.
However if I press the back button or type in the URL of a protected
resource it sends the authentication information back and I am not
prompted to log back in. On looking at the session and cookie info, I
found that a new one had been created with the same auth information.
"It just ignored the HTTP 401 !!!"
Now I dont know if that is a bug in IE ( I am inclined to believe it
is!! ), but I have tested my package pretty exhaustively and it works
without fail in all NS and upto IE 5.0. If anybody has encountered the
problem before and has figured out how to deal with it 'without' closing
all IE windows, I would be immensely grateful if s/he could pass on the
information.
Thanks for you collective patience.
Aseem
==================================================================
Aseem Mohanty
==================================================================
"I saw `cout' being shifted "Hello world" times to the left and
stopped right there!!" -- Steve Gonedes
==================================================================