and thanks for taking the time to read my question. We will have visitors to the site that might arrive at another user’s profile page. We will then encourage them to login to the site, or register as new if they are not currently members. These actions move them pretty far away from that initial page/URL they stated on, but we want to be able to “jump them” back to that page after completing login/sign-up by “keeping track” where they began. (NOTE: we’re using the standard Microsoft membership provider classes, if it matters.) The “jumping back” part seems straightforward, it is the “keeping track” part that is the problem.
An illustration/example:
A visitor arrives at the site after clicking: http://www.mysite.com/profiles/ID=108
The visitor then leaves that page to login. How can we best capture the ID=108 somehow, so that there is a good option for the (logged-in) user to return to that profile page? I understand from reading that cookies are not optimal, but some of the other options seem to throw a monkey wrench into my thinking since the user is not yet logged-in, etc.
Any concrete steps that I can take to address this in the best MVC3 way?
EDIT:
public ViewResult MyProfile(int? id)
{
HttpCookie cookie = new HttpCookie("MySiteCookie");
cookie.Value = id.ToString();
cookie.Expires = DateTime.Now.AddYears(1); //or whatever time is appropriate
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
//do some other stuff
}
At the other end, to make use of the cookie, I’ve put it into the menu (temporarily) in such a way:
var MyProfileId = "";
if (Request.Cookies["MySiteCookie"] != null)
{HttpCookie cookie = request.Cookies["MySiteCookie"];
MyProfileId = Server.HtmlEncode(cookie.Value);}
and then you put it into your link
IMHO cookies are the best way to approach this. When an anonymous user lands on the profiles page simply emit a cookie containing the
idof the profile that he is currently viewing. Then later when he successfully logs in read this cookie value to obtain theidand construct the redirect link and redirect him to this link.Another possibility is to use server side session but I am mentioning this just as an alternative to cookies and not at all as something that I would recommend.