ASP.NET成员身份为每个用户返回相同的会话信息

ASP.NET成员身份为每个用户返回相同的会话信息,asp.net,asp.net-membership,Asp.net,Asp.net Membership,我有一个ASP.NET成员资格申请。我以“JONNY”的身份登录,这是一个成功。然后,鲁伯特(从另一台电脑,在不同的位置)点击会员区,他没有被提示登录,但他看到了乔尼的个人资料和信息。就好像Jonny点击了“记住我”,然后Rupert来到他的同一台机器上并点击了链接——在这里,我希望Rupert看到Jonny的页面,因为它在同一台机器上,Jonny没有注销。但是这两个人在不同的地方,在不同的机器上,不同的IP等等 这怎么可能 public ActionResult Login(Login

我有一个ASP.NET成员资格申请。我以“JONNY”的身份登录,这是一个成功。然后,鲁伯特(从另一台电脑,在不同的位置)点击会员区,他没有被提示登录,但他看到了乔尼的个人资料和信息。就好像Jonny点击了“记住我”,然后Rupert来到他的同一台机器上并点击了链接——在这里,我希望Rupert看到Jonny的页面,因为它在同一台机器上,Jonny没有注销。但是这两个人在不同的地方,在不同的机器上,不同的IP等等

这怎么可能

    public ActionResult Login(LoginModel model, string returnUrl)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            // user is logged in here, we know the username is valid...
            var memberStore = new MemberStore();
            var member = memberStore.GetMemberByUsername(model.UserName);

            // but now check if they've confirmed their email
            // if not, sign the session out and show inactive account view...
            if (!member.IsActive)
            {
                FormsAuthentication.SignOut();
                return View("AccountNotActive");

            }
            string[] roleNames = Roles.GetRolesForUser(model.UserName);

            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

            Settings.Setting.UserSession.Member = member;
            var viewModel = new MyProfileViewModel { Member = memberStore.GetMemberByUsername(model.UserName) };
            viewModel.Role = roleNames[0];

            return View("MyProfile", viewModel);
        }

        // If we got this far, something failed, redisplay form
        ModelState.AddModelError("", "The user name or password provided is incorrect.");
        return View(model);
    }

    public ActionResult Logout()
    {
        Settings.Setting.UserSession.Member = null;
        FormsAuthentication.SignOut();
        return View("LoggedOut");
    }

写一个答案,这样我可以显示代码。一个可能的快速解决方案可能如下所示:

public static class UserSession
{

    public static SiteMember Member
    {
        get
        {
            return HttpContext.Current.Session["Member"] as SiteMember;
        }
        set
        {
            HttpContext.Current.Session["Member"] = value;
        }
    }
}

静态成员在这里没有问题,因为实现是基于特定于当前用户会话的值进行的。

您可以发布您的登录代码吗?任何人都无法在不看到登录代码的情况下回答此问题,主要是设置成员身份令牌的代码。我的头被撞坏了!代码当然会有帮助!道歉。什么是
Settings.Setting.UserSession.Member=Member做什么?我知道不太清楚,但它存储了一个核心项目的模型,其中包含了注册时提供的所有客户详细信息、姓名、地址、年龄、出生日期等。它从登录时提供的用户名中检索此信息。它不是实际的成员/用户。嗯。。。这是否会被存储,并且每个用户都会看到?当我认为每次访问站点都会实例化一个新会话时,这意味着在填充之前这些信息都是空的,我错了吗?