the resource net mvc found cannot asp .net asp.net-mvc cookies membership

resource - "Recordarme" con ASP.NET MVC Autenticación no funciona



security asp net mvc (3)

Debe generar una cookie persistente en el método del controlador que maneja el inicio de sesión cuando se marca la casilla Recordarme. Si está utilizando RedirectFromLoginPage , establezca el argumento createPersistentCookie en true .

Tengo un proyecto web estándar ASP.NET MVC (RC Refresh), con el proveedor de membresía ASP.NET estándar y el controlador de cuenta que se incluye en la plantilla del proyecto.

Cuando marque "Recordarme" en mi formulario de inicio de sesión, el sitio aún no me recuerda. (Firefox recuerda mi nombre de usuario y contraseña, pero lo que esperaba que sucediera era iniciar sesión automáticamente).

¿Debo configurar y verificar la cookie manualmente? Si es así, ¿cómo debería hacerse?


Debe pasar verdadero / falso al método SetAuthCookie.

public ActionResult Login (string email, string password, bool rememberMe, string returnUrl) { // snip FormsAuth.SetAuthCookie(username, rememberMe); // <- true/false // snip }

y asegúrese de que bool rememberMe refleje el estado de la casilla de verificación en su página de inicio de sesión.


Estos 3 métodos me ayudaron a persistir una galleta.

Tenga en cuenta que si el usuario deselecciona "Recordarme", querrá eliminar la cookie.

private const string RememberMeCookieName = "MyCookieName"; private string CheckForCookieUserName() { string returnValue = string.Empty; HttpCookie rememberMeUserNameCookie = Request.Cookies.Get(RememberMeCookieName); if (null != rememberMeUserNameCookie) { /* Note, the browser only sends the name/value to the webserver, and not the expiration date */ returnValue = rememberMeUserNameCookie.Value; } return returnValue; } private void CreateRememberMeCookie(string userName) { HttpCookie rememberMeCookie = new HttpCookie(RememberMeCookieName, userName); rememberMeCookie.Expires = DateTime.MaxValue; Response.SetCookie(rememberMeCookie); } private void RemoveRememberMeCookie() { /* k1ll the cookie ! */ HttpCookie rememberMeUserNameCookie = Request.Cookies[RememberMeCookieName]; if (null != rememberMeUserNameCookie) { Response.Cookies.Remove(RememberMeCookieName); rememberMeUserNameCookie.Expires = DateTime.Now.AddYears(-1); rememberMeUserNameCookie.Value = null; Response.SetCookie(rememberMeUserNameCookie); } }