2013-09-23 3 views
1

Я использую пользовательские поставщики членства для своего веб-сайта. и использовать этот код для входа в систему:Как сохранить ASP.NET_SessionId в пользовательских поставщиках членства

private User SetupFormsAuthTicket(string userName, bool persistanceFlag) 
    { 
     User user; 
     UsersContext usersContext = new UsersContext(); 
      user = usersContext.GetUser(userName); 

     var userId = user.UserId; 
     var userData = userId.ToString(CultureInfo.InvariantCulture); 
     var authTicket = new FormsAuthenticationTicket(1, //version 
          userName, // user name 
          DateTime.Now,    //creation 
          DateTime.Now.AddMinutes(30), //Expiration 
          persistanceFlag, //Persistent 
          userData); 

     var encTicket = FormsAuthentication.Encrypt(authTicket); 
     Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)); 
     return user; 
    } 

но я проверить куки в браузере, только что спас ASPXAUTH и не сохраняются ASP.NET_SessionId

Я хочу сохранить ASP.NET_SessionId но persistanceFlag верно.

ответ

0

Если вы хотите сохранить аутентификационный билет, вам необходимо явно указать cookie Expires так же, как истечение срока действия аутентификации.

.... 

var encTicket = FormsAuthentication.Encrypt(authTicket); 
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 

if (authTicket.IsPersistent) 
{ 
    cookie.Expires = authTicket.Expiration; 
} 

Response.Cookies.Add(cookie); 
Смежные вопросы