2012-03-27 26 views
7

He configurado el tiempo de caducidad de la cookie en 1 mes, pero cuando miro el tiempo de caducidad de expiración de la cookie .ASPXAUTH en el navegador dice 30 minutos más adelante.El tiempo de caducidad de la cookie auth ASPX es siempre de 30 minutos

var ticket = new FormsAuthenticationTicket(1, "myname", DateTime.Now, 
                 DateTime.Now.AddMonths(1), true, "test"); 
string ticketString = FormsAuthentication.Encrypt(ticket); 
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, ticketString) 
       { 
        Expires = DateTime.Now.AddMonths(1), 
        Path = FormsAuthentication.FormsCookiePath 
       }; 
HttpContext.Current.Response.Cookies.Add(cookie); 

¿Puede usted, hágamelo saber por qué el código anterior se comporta así, quiero cambiar la fecha de caducidad, pero siempre está llegando 30 minutos.

+0

¿dónde especificó 1 mes? – V4Vendetta

+0

¿tiene algún motivo para crear manualmente el ticket de autenticación? Si lo hace automáticamente, puede manejar el tiempo de caducidad a través de web.config. –

+0

V4Vendetta lo hace aquí: "DateTime.Now.AddMonths (1)" Para Rocky Singh, ¿ha verificado la propiedad slidingExpiration = "false"? Supongo que no lo está especificando como falso o está ausente. En este caso, cada solicitud restablece la caducidad a la predeterminada en Web.Config –

Respuesta

3

¿Necesita establecer este tiempo de espera programáticamente o está bien configurarlo en el archivo de configuración? Hay un parámetro de tiempo de espera, que indica el tiempo de espera de cookie de autenticación: http://msdn.microsoft.com/en-us/library/1d3t3c61.aspx

El valor predeterminado de este parámetro es 30 minutos.

Saludos, Dmitry

2

Comprobar que el archivo web.config, no debe haber entrada siguiente forma bajo system.web elemento -> autenticación.

comprobar la propiedad de tiempo de espera allí, ¿está configurado en 30 minutos?

elimine esta etiqueta de autenticación de formulario de allí.

+0

Es solo

+0

intente agregar dominio a la etiqueta de formularios (cualquier cadena), tuve el mismo problema, tuve que configurarlo en 240 minutos, hice ambos la entrada misma en web.config y en el código y el dominio agregado en la etiqueta del formulario. También reduje el tiempo de espera de Application Pool en IIS a 240 minutos. –

2

Con el consejo de las otras respuestas llegué al enlace this.

Aparentemente, en ASP.NET comprueba la caducidad en Web.config y no elimina la caducidad de la cookie. Por lo tanto, debe agregar al archivo de configuración dentro de <system.web>:

<authentication mode="Forms"> 
    <forms 
name=".ASPXAUTH" 
loginUrl="Login.cshtml" //your login page 
defaultUrl="Default.cshtml" //your default page 
protection="All" //type of encryption 
timeout="43200" //a month in minutes 
path="/" 
requireSSL="false" 
slidingExpiration="true" //Every refresh the expiration time will reset 
cookieless="UseDeviceProfile" //Use cookies if the browser supports cookies 
domain="" 
enableCrossAppRedirects="false"> 
    <credentials passwordFormat="SHA1" /> 
    </forms> 
</authentication> 
Cuestiones relacionadas