[EMAIL PROTECTED] wrote:
> How are you handling your sessions?  I use Apache::Session::Postgres.

I'm using AuthCookie.  A customization of AuthCookieDBI to be specific. 
     However, I also use Apache::Session.  Basically, I authenticate 
with AuthCookie, then I pass the authenticated username over to 
Apache::Session::File (for now, probably soon to become A:S:Postgres) 
and use the user id as the session key.  In that session I store user 
preferences, etc...

> In my scenario, if I needed to do this, I would check the list of valid 
> sessions I have for one that exists for the user.  ie, if 'gphat' tries to 
> login, I check to see if any of the sessions the db are for user gphat.  If so, 
> eliminate it and create a new one.

I can also detect if the user had an existing session already (I store 
the AuthCookie key in the db for each user).  However, the question is 
just because there's an existing AuthCookie key, it doesn't mean they 
have another active session.  It could just be an expired one.  So, it 
seems the logic would go something like:

1.  User logs in
2.  Check for another session key for this user
3.  If found, check to see if it's expired.
4.  If not expired, alert user and ask if user wants to expire older session
5.  Expire older session

It's #5 that's troublesome.  I wasn't sure how I could expire the older 
session (since the session key that matters is sitting client side).  I 
guess I could keep a table of invalidated session keys, and check 
against that every time in along with all the other checks going on in 
authen_ses_key().  I was just mainly asking if there was an existing 
solution out there.

The main requirement that we're trying to solve is that a user cannot be 
signed on from more than one location at once.  Mainly because this 
probably means that they walked away from a computer with an active 
session on it, which isn't good.  I suppose an inactivity timer might be 
helpful, too.

Thanks,
Fran



Reply via email to