How can I restart a session

If the user clicks the log out button, I'm doing a structclear of the session scope. This means that any subsequent pages will not have the cfid or cftoken defined, so what I need to do is actually destroy the current session and restart a new one all in the same chunk of code. I happen to be doing this in onRequestStart

Thanks.
LVL 5
jtreherAsked:
Who is Participating?
 
JeffHowdenCommented:
jtreher, this is why the CF docs specifically warn against using the StructClear() function on the session scope.

What I do to avoid this is have all session stuff stored in a key (that is itself a structure) off the session scope.

<cfscript>
  session.user = StructNew();
  session.user.id = 0;
  session.user.username = '';
  session.user.email = '';
</cfscript>

Then, clearing the login is as simple as using StructDelete on the user key.

<cfscript>
  StructDelete(session, 'user');
</cfscript>

Then, a redirect.  Some initialization code in application.cfm detects that the user key does not exist in the session scope and recreates it and all it's keys.
0
 
dgrafxCommented:

Why not do the structclear on a "logout" page

<cfset StructClear(session)>  of course to clear the struct
<then locate back to a home page or login or whatever>
aborting immediately after
<cfabort>

This is assuming you have some code in place that creates the session if it doesn't exist that is called when user comes to the site.
0
 
jtreherAuthor Commented:
Hmmm, the URL token is the only thing that shows up in the session scope. cfid and cftoken will not recreate themselves unless the browser is shut down.

i'm calling onSessionEnd() and then onSessionStart
0
 
dgrafxCommented:
Possibly you need to recreate them manually within your onSessionEnd
0
 
jtreherAuthor Commented:
Sorry about the delay, I will check into this because I really am using a substructure as well.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.