Click here to Skip to main content
Click here to Skip to main content

Browser back button issue after logout

By , 20 Feb 2013
 
Well, I found a lot of people asking for a resolution to handle the browser's back button once user has logged out.
 
Typically, users report something like:
I am facing issue in my application's logout scenario. After the user login into website, he/she uses it(website) and when done, they do a logout, which leads them back to login page. But the problem is now, from this login page, if I click the browser back button then it again takes the user back to the previous visited page as if logged in. How can I stop user from viewing the previous page once logged out?

The browser Back button is an option to go back to previously visited pages. The back button can be considered as a pointer that is linked to the page previously visited by the user. Browser keeps a stack of the web pages visited as a doubly-linked list.

The back button works by stepping through the history of HTTP requests which is maintained by the browser itself. This history is stored in browsers cache that consists of the entire page content with resources like image and scripts. This enables browser to navigate backwards and forwards through the browser history and have each page displayed instantly from cache without the delay of having it retransmitted over the internet from the server.

Just to handle the scenario of getting page content from server, browsers have a Refresh button that transmits the request to web server and get back the fresh copy of entire page. Internally, this also replaces the copy of the page in the browser's cache.

So, what's the basic reason behind it? It's, browser's Cache!
Now, what can be done to handle the scenario? Surely on logout event one does clear the session. Post which, browsers cache needs to be handled such that browser has no history (this will make back/forward button in browser grayed out disabled.) Here are various ways of how one can do it:

Option #1: Set Response Cache settings in code-behind file for a page
// Code disables caching by browser.
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
Option #2: Set META tag for HTTP cache settings in your ASPX page header
<META Http-Equiv="Cache-Control" Content="no-cache"/>
<META Http-Equiv="Pragma" Content="no-cache"/>
<META Http-Equiv="Expires" Content="0"/>
Option #3: Clear browser's history through JavaScript using script tag
//clears browser history and redirects url
<SCRIPT LANGUAGE="javascript">
function ClearHistory()
{
     var backlen = history.length;
     history.go(-backlen);
     window.location.href = loggedOutPageUrl
}
</SCRIPT>
Option #4: Clear browser's history through JavaScript injecting through code-behind file via Response
protected void LogOut()
{
     Session.Abandon();
     string loggedOutPageUrl = "Logout.aspx";
     Response.Write("<script language="'javascript'">");
     Response.Write("function ClearHistory()");
     Response.Write("{");
     Response.Write(" var backlen=history.length;");
     Response.Write(" history.go(-backlen);");
     Response.Write(" window.location.href='" + loggedOutPageUrl + "'; ");
     Response.Write("}");
     Response.Write("</script>");
}
Option #5: Clear browser's history through JavaScript injecting through code-behind file via Page.ClientScript
Page.ClientScript.RegisterStartupScript(this.GetType(),"clearHistory","ClearHistory();",true);
UPDATE:
As Chris[^] suggested, I would like to add here itself as a part of the Tip/Trick that I would not suggest to use it and mess with browser's history as this is a bad, bad thing.
One should implement it, only if they really need it and are prepared to accept that it is not a good practice.
 
Lastly, this would not work if one disables JavaScript.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Sandeep Mewara
Software Developer (Senior)
India India
Member
From Bangalore, India.
My blog: http://smewara.wordpress.com/

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 5membergrijesh__mnit25 Mar '13 - 3:43 
GeneralMy vote of 3membergrijesh__mnit25 Mar '13 - 3:14 
GeneralRe: My vote of 3mvpSandeep Mewara25 Mar '13 - 3:23 
GeneralRe: My vote of 3membergrijesh__mnit25 Mar '13 - 3:46 
GeneralMy vote of 5memberRenju Vinod28 Feb '13 - 0:56 
QuestionFirefox [modified]memberClaes Andskär22 Feb '13 - 22:26 
QuestionThanksmemberdb7uk21 Feb '13 - 9:20 
GeneralMy vote of 1memberSukh Veer Singh29 Jan '13 - 22:13 
GeneralRe: My vote of 1mvpSandeep Mewara29 Jan '13 - 23:05 
GeneralRe: My vote of 1memberSukh Veer Singh30 Jan '13 - 1:59 
GeneralMy vote of 4memberArun Selva Kumar B27 Jan '13 - 20:16 
GeneralA syntax errormember ProgramFOX5 Jan '13 - 6:04 
GeneralRe: A syntax errormvpSandeep Mewara26 Jan '13 - 20:08 
GeneralRe: Thanks....i have been clear now......memberPritesh Aryan29 Apr '11 - 23:25 
GeneralReason for my vote of 5 good article to understand caching s...membernikhi _singh8 Feb '12 - 18:52 
GeneralReason for my vote of 5 very helping articlememberManojDhobale9 Jan '12 - 17:51 
GeneralReason for my vote of 5 Nice tipmembernagendrathecoder28 Dec '11 - 19:49 
GeneralReason for my vote of 5 good onememberPrince Antony G13 Dec '11 - 1:14 
GeneralReason for my vote of 5 Nice.. My 5 memberTejas_Vaishnav10 Nov '11 - 19:15 
GeneralReason for my vote of 5 dfdgdfgmemberPGunge24 Oct '11 - 18:08 
GeneralIf your deleting all of the browser session history, then it...memberzenwalker19857 Oct '11 - 4:39 
GeneralReason for my vote of 5 Good tipmemberSChristmas29 Jun '11 - 1:33 
General@Sandeep, Thanks for replying......one more question i have ...memberPritesh Aryan29 Apr '11 - 22:06 
GeneralRe: It would depend on the way you do it. If you use History bac...mvpSandeep Mewara29 Apr '11 - 22:24 
General@Sandeep.. Though i have not much experience in WEB...i woul...memberPritesh Aryan29 Apr '11 - 18:56 
GeneralRe: Thats a the design constraint. I clearly mentioned it is not...mvpSandeep Mewara29 Apr '11 - 19:40 
GeneralReason for my vote of 5 Good tip for beginners 'How handle ...memberE$w@r17 Mar '11 - 8:35 
GeneralVery good, 5. --SAmvpSAKryukov20 Feb '11 - 20:32 
GeneralReason for my vote of 5 Nice and valuable tipmemberSreejith Gopinathan16 Feb '11 - 23:10 
GeneralReason for my vote of 5 Nice tip, Sandeep! --SAmvpSAKryukov4 Feb '11 - 9:47 
GeneralReason for my vote of 5 Very Nice Tip, Thanks for Sharing. I...memberGandalf - The White30 Jan '11 - 19:11 
GeneralReason for my vote of 5 Veru useful information, Sandeep, th...mvpSAKryukov27 Jan '11 - 20:47 
GeneralReason for my vote of 5 Thanks for sharing this tipmemberlinuxjr27 Jan '11 - 16:53 
GeneralReason for my vote of 1 None of the ways are fool proof.member d@nish 27 Jan '11 - 10:04 
GeneralEncouraging developers to mess with browser history is a bad...adminChris Maunder23 Jan '11 - 19:56 
GeneralRe: Thanks for your suggestion Chris. I have updated the Tip/Tri...mvpSandeep Mewara27 Jan '11 - 6:53 
GeneralRe: Thanks for your suggestion Chris. I have updated the Tip/Tri...memberCorruptmind20 May '12 - 22:25 
GeneralBut Dear Sandeep, it doesn't work with Google Chrome or Fire...memberMember 453006420 Jan '11 - 1:07 
GeneralReason for my 5: Good tip. Very valuable infomation. Thanks ...mvpManfred R. Bihy1 Jan '11 - 6:29 
GeneralReason for my vote of 5 Good one! This is a very valuable Ti...mvpManfred R. Bihy1 Jan '11 - 6:28 
GeneralReason for my vote of 5 Nice one Sandeep!! This is very comm...mentorBrij20 Dec '10 - 20:39 
GeneralReason for my vote of 5 Nice OnememberVigneshb620 Dec '10 - 19:54 
GeneralReason for my vote of 5 Good one. This question was asked by...memberSChristmas18 Dec '10 - 23:40 
GeneralGood workmemberAbdul Quader Mamun16 Dec '10 - 8:49 
Generalwindows.history.clear is much better and simplememberXmen W.K.12 Dec '10 - 1:37 
GeneralReason for my vote of 5 Good one...It will be useful for man...mvpthatraja9 Dec '10 - 19:29 
GeneralThanks for the info and tip!subeditorWalt Fair, Jr.9 Dec '10 - 13:53 
GeneralReason for my vote of 5 Thanks for Posting it Sandeep. It wi...mentorAbhijit Jana9 Dec '10 - 8:49 
Reason for my vote of 5
Thanks for Posting it Sandeep. It will help for giving as reference answer in forums !
QuestionRegarding browser back button issuememberMichael Sahaya Mary8 Feb '12 - 22:25 
AnswerRe: Regarding browser back button issuemvpSandeep Mewara19 Feb '12 - 23:39 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web04 | 2.6.130516.1 | Last Updated 20 Feb 2013
Article Copyright 2010 by Sandeep Mewara
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid