Как сохранить значение идентификатора в управлении сеансами приложения Asp.net MVC - PullRequest
0 голосов
/ 10 января 2019

Как сохранить значение Id в моем приложении MVC Asp.net после входа в систему - сохранить идентификатор в приложении ASP.NET MVC?

Я пытался использовать переменную сеанса, подобную этой, в контроллере входа в систему

[HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult LoginPage(UserLogin login)
            {
              else if (string.Compare(CryptoCode.Hash(login.Password), v.PPassword) == 0)
                {
                    int timeout = login.RememberMe ? 60 : 60; // 525600 min = 1 year
                    var ticket = new FormsAuthenticationTicket(login.EmailID, login.RememberMe, timeout);
                    string encrypted = FormsAuthentication.Encrypt(ticket);
                    var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
                    cookie.Expires = DateTime.Now.AddMinutes(timeout);
                    cookie.HttpOnly = true;
                    Response.Cookies.Add(cookie);
                    var profile = db.Profile.Where(x => x.UserLoginId == v.UserLoginId).FirstOrDefault();
                    Session["PId"] = profile.PId;

                    if (Url.IsLocalUrl(login.ReturnUrl))
                    {
                        return Redirect(login.ReturnUrl);
                    }
                    else
                    {

                               return Redirect("/ProfilePage/fileupload/index");
                    }
}

В моем другом контроллере верхнего уровня

public ActionResult MainPage()
        {
 if (Session["PId"] != null)
        {
            Int64 pid = (Int64)System.Web.HttpContext.Current.Session["PId"];
......
......
        }
        else
        {
            return View("~/Registration/Registration/loginpage");
        }
}

В файле web.config

<authentication mode="Forms">
<forms cookieless="UseCookies" loginUrl="~/Registration/loginpage" timeout="60" slidingExpiration="true"></forms>
</authentication>
<sessionState mode="InProc" timeout="60"></sessionState>

когда я закрываю браузер, значение сеанса становится нулевым, но мой сеанс входа в систему активен, поэтому я получаю исключение нулевой ссылки или pid null.

В моем приложении у меня есть много контроллеров, которые имеют много методов действия. мне не интересно проверять, является ли значение сеанса условия в каждом методе действия.

Как сохранить значение сеанса после закрытия браузера и повторного открытия в течение заданного времени ожидания в сеансе (например, 20 минут)?

...