Как сохранить значение 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 минут)?