在MVC中登录后检索会话

时间:2016-01-07 17:47:03

标签: asp.net asp.net-mvc asp.net-mvc-4 session

我想使用Session制作购物车。我所做的是使用一个基础控制器,我在Session [“购物车”]中分配一个新购物车。

正如预期的那样,当我浏览不同页面并返回“购物车”页面时,购物车仍然存在,其中包含产品。

但是一旦我登录,我的会话就是空的。如何在登录后保持会话活动,或者将以前的会话数据分配给新会话?

我的BaseController类:

 protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);
        if(Session["cart"] == null)
        {
            Session["cart"] = new Order();
        }
    }

我的Global.asax文件:

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }

    protected void Application_AuthenticateRequest()
    {
        if (HttpContext.Current.User != null)
        {
            if (HttpContext.Current.User.Identity.IsAuthenticated)
            {
                if (HttpContext.Current.User.Identity is FormsIdentity)
                {
                    var id = (FormsIdentity)HttpContext.Current.User.Identity;
                    var ticket = (id.Ticket);
                    ticket = FormsAuthentication.Decrypt(id.Ticket.Name);

                    if (!string.IsNullOrEmpty(ticket.UserData))
                    {
                        string userData = ticket.UserData;
                        string[] roles = userData.Split(',');
                        HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
                    }
                }
            }
        }
    }

    protected void Session_Start(object sender, EventArgs e)
    {

    }

    protected void Session_End(object sender, EventArgs e)
    {

    }

我觉得这个global.asax文件中有一些事情要做,但我不太清楚。谢谢你的帮助!

0 个答案:

没有答案