private void SetCredentialsFromTo(AnonymousUser anonymousUser, RegisteredUser user) { var loggedInUser = new PrincipalAdapter <int, MvcMusicStore.Models.Enums.Roles>(user.Username, user.Id, new GenericIdentity(user.Username), user.Role); this.HttpContext.User = loggedInUser; var cookie = new HttpCookie("user"); cookie.Values.Add("isAnonymous", false.ToString()); cookie.Values.Add("userId", user.Id.ToString()); this.Response.Cookies.Set(cookie); this.TypedSession = loggedInUser; }
public ActionResult LogOff() { var anonymousUser = new AnonymousUser { LatestAddress = Request.UserHostAddress }; var currentUser = new PrincipalAdapter <int, MvcMusicStore.Models.Enums.Roles>(anonymousUser.LatestAddress, anonymousUser.Id, new AnonymousIdentity(anonymousUser.LatestAddress), anonymousUser.Role); NHibernateSession.Save(anonymousUser); this.HttpContext.User = currentUser; var cookie = new HttpCookie("user"); cookie.Values.Add("isAnonymous", true.ToString()); cookie.Values.Add("userId", anonymousUser.Id.ToString()); this.TypedSession = currentUser; return(RedirectToAction("Index", "Home")); }
public override void OnActionExecuting(ActionExecutingContext filterContext) { var currentUser = (PrincipalAdapter <int, MvcMusicStore.Models.Enums.Roles>)filterContext.HttpContext.Session["User"]; if (currentUser == null) { if (!filterContext.HttpContext.Request.Cookies.AllKeys.Contains("user")) { var anonymousUser = new AnonymousUser { Role = Roles.Anonymous, LatestAddress = filterContext.HttpContext.Request.UserHostAddress }; Session.Save(anonymousUser); var newCookie = new HttpCookie("user"); newCookie.Values.Set("isAnonymous", "true"); newCookie.Values.Set("userId", anonymousUser.Id.ToString()); newCookie.HttpOnly = true; newCookie.Expires = DateTime.Today.AddDays(2.0); currentUser = new PrincipalAdapter <int, MvcMusicStore.Models.Enums.Roles>(anonymousUser.LatestAddress, anonymousUser.Id, new AnonymousIdentity(anonymousUser.LatestAddress), anonymousUser.Role); filterContext.HttpContext.Response.AppendCookie(newCookie); filterContext.HttpContext.Session["User"] = currentUser; filterContext.HttpContext.User = currentUser; } else { var cookie = filterContext.HttpContext.Request.Cookies.Get("user"); bool isAnonymous = Convert.ToBoolean(cookie["isAnonymous"]); int userId = Convert.ToInt32(cookie["userId"]); if (isAnonymous) { var anonymousUser = Session.Get <AnonymousUser>(userId); if (anonymousUser != null) { currentUser = new PrincipalAdapter <int, MvcMusicStore.Models.Enums.Roles>(anonymousUser.LatestAddress, anonymousUser.Id, new AnonymousIdentity(anonymousUser.LatestAddress), anonymousUser.Role); filterContext.HttpContext.Session["User"] = currentUser; filterContext.HttpContext.User = currentUser; } else { anonymousUser = new AnonymousUser { Role = Roles.Anonymous, LatestAddress = filterContext.HttpContext.Request.UserHostAddress }; Session.Save(anonymousUser); var newCookie = new HttpCookie("user"); newCookie.Values.Set("isAnonymous", "true"); newCookie.Values.Set("userId", anonymousUser.Id.ToString()); newCookie.HttpOnly = true; newCookie.Expires = DateTime.Today.AddDays(2.0); filterContext.HttpContext.Response.AppendCookie(newCookie); currentUser = new PrincipalAdapter <int, MvcMusicStore.Models.Enums.Roles>(anonymousUser.LatestAddress, anonymousUser.Id, new AnonymousIdentity(anonymousUser.LatestAddress), anonymousUser.Role); filterContext.HttpContext.Session["User"] = currentUser; filterContext.HttpContext.User = currentUser; } } else { var loggedInUser = Session.Get <RegisteredUser>(userId); currentUser = new PrincipalAdapter <int, MvcMusicStore.Models.Enums.Roles>(loggedInUser.Username, loggedInUser.Id, new GenericIdentity(loggedInUser.Username), loggedInUser.Role); filterContext.HttpContext.Session["User"] = currentUser; } } } else { filterContext.HttpContext.User = currentUser; } }