Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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;
            }
        }