Вы можете сохранить данные на время сеанса аутентификации, используя поле userdata в файле cookie аутентификации.
Код ниже - это действие LogOn из AccountController в проекте MVC по умолчанию:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Вы можете заменить:
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
с:
string fullName = "User full name";
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, model.Email, DateTime.Now,
DateTime.Now.AddDays(2), model.RememberMe, fullName);
string encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) { Expires = DateTime.Now.AddDays(2) });
Если вы хотите хранить больше данных, чем можете упаковать в обычную строку, вам придется обратиться к некоторому сериализатору данных.
Затем вам нужно будет реализовать что-то для разбора сериализованных данных при использовании файла cookie авторизации.
Данные доступны через:
((FormsIdentity)User.Identity).Ticket.UserData;
Надеюсь, это поможет
Edit:
Также измените DateTime.Now.AddDays (2) на любое, что вы хотите, чтобы ваш сеанс аутентификации оставался действительным.