На основании предоставленной дополнительной информации вы хотите сохранить дополнительные данные с билетом FormsAuthentication. Для этого вам нужно сначала создать собственный билет FormsAuthentication:
Хранение данных
Получить текущий HttpContext (не беспокоясь о тестируемости)
var httpContext = HttpContext.Current;
Определите, когда должен истечь срок действия билета:
var expires = isPersistent
? DateTime.Now.Add(FormsAuthentication.Timeout)
: NoPersistenceExpiryDate; // NoPersistenceExpiryDate = DateTime.MinValue
Создайте новый билет FormsAuthentication для хранения ваших пользовательских данных.
var authenticationTicket = new FormsAuthenticationTicket(
1,
username,
DateTime.Now,
DateTime.Now.Add(FormsAuthentication.Timeout),
isPersistent,
"My Custom Data String"); //Limit to about 1200 bytes max
Создайте свой HTTP cookie
new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authenticationTicket))
{
Path = FormsAuthentication.FormsCookiePath,
Domain = FormsAuthentication.CookieDomain,
Secure = FormsAuthentication.RequireSSL,
Expires = expires,
HttpOnly = true
};
И, наконец, добавить к ответу
httpContext.Response.Cookies.Add(cookie);
Получение данных
Затем вы можете получить свои данные по последующим запросам, проанализировав сохраненный билет аутентификации ...
Опять захватить текущий HttpContext
var httpContext = HttpContext.Current
Проверьте, аутентифицирован ли запрос (вызовите Application_AuthenticateRequest или OnAuthorize)
if (!httpContext.Request.IsAuthenticated)
return false;
Проверьте, есть ли у вас доступный билет FormsAuthentication и что он не истек:
var formsCookie = httpContext.Request.Cookies[FormsAuthentication.FormsCookieName];
if (formsCookie == null)
return false;
Получить билет FormsAuthentication:
var authenticationTicket = FormsAuthentication.Decrypt(formsCookie.Value);
if (authenticationTicket.Expired)
return false;
И, наконец, получить ваши данные:
var data = authenticationTicket.UserData;