簡體   English   中英

用戶登錄時立即將用戶信息添加到會話數據中

[英]Adding user info to session data right when user logins

我目前有以下登錄腳本:

[HttpPost]
        public ActionResult LogOn(LogOnModel model)
        {
            if (ModelState.IsValid)
            {
                if (Membership.ValidateUser(model.UserName, model.Password))
                {
                    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                    Guid MyUserId = (Guid)Membership.GetUser().ProviderUserKey;
                    System.Web.HttpContext.Current.Session[MyUserId.ToString()] = profileRepository.GetFullProfile(MyUserId);
                    return Json(true);                  
                }
                else
                {
                    return Json("The user name or password provided is incorrect.");
                }
            }else
                return Json("The user name or password provided is incorrect.");

        }

我在Membership.GetUser()上收到一個錯誤,說該object reference錯誤。 我對此進行了研究,發現這是因為只有下一個http請求將通過身份驗證,所以在用戶登錄時將用戶數據保存到會話中的最佳方法是什么? 是否可以確保一直存在到會話中,直到用戶的會話到期並將其踢出去,還是會出現用戶沒有會話數據集登錄的實例? 如果有病,也需要一些東西來處理。

我在asp.net application (不是MVC)中的LoginButton_Clicked中發生了這種情況。 甚至以為成功登錄后會觸發此事件( LoginButton_Clicked )Membership.GetUser(),Roles.GetRolesForUser(),Profile尚未填寫。因此,需要將用戶名傳遞給每個方法以獲取詳細信息。

我認為MVC中也發生了同樣的事情。

您可以通過傳遞model.UserName來獲取用戶詳細信息,如下所示。

MembershipUser mu = Membership.GetUser(model.UserName);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM