0

ASP.NET メンバーシップ アプリケーションがあります。「JONNY」としてログインすると成功です。次に RUPERT が (別の場所にある別の PC から) メンバー エリアをクリックすると、ログインは求められませんが、Jonny のプロフィールと情報が表示されます。まるで、Jonny が「Remember Me」をクリックしたかのように、Rupert は彼の同じマシンの上に来て、リンクをクリックします。ここでは、同じマシン上にあり、Jonny がログアウトしていないため、Rupert に Jonny のページが表示されることを期待します。しかし、この 2 人は別の場所、別のマシン、別の 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");
    }
4

1 に答える 1