tutorial net mvc example español asp asp.net-mvc-5 owin asp.net-identity

asp.net mvc 5 - mvc - Cómo cambiar las cookies de autenticación después de cambiar UserName del usuario actual con identidad asp.net



mvc 5 user identity (1)

¿Cómo inicia sesión / autentica a un usuario con Asp.Net MVC5 RTM usando AspNet.Identity?

private async Task SignInAsync(ApplicationUser user, bool isPersistent) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity); }

Para RC1, puede usar el código similar.

AuthenticationManager.SignOut(); IdentityManager.Authentication.SignIn(AuthenticationManager, user.UserId, isPersistent:false);

Para obtener un valor persistente, debe acceder a la cookie de autenticación y recuperar el estado.

Actualizado:

Use AuthenticationType apropiado en lugar de "Bearer". También asegúrese de que al emitir el ticket de inicio de sesión, establezca AuthenticationProperties.IsPersistent.

bool isPersistent=false; var authContext = await Authentication.AuthenticateAsync("Bearer"); if (authContext != null) { var aProperties = authContext.Properties; isPersistent = aProperties.IsPersistent; }

Utilizando asp.net identidad versión 1.0.0-rc1 con Entity Framework 6.0.0-rc1 (los que vienen con Visual Studio 2013 RC).

Intentando dar a los usuarios la oportunidad de cambiar su nombre de UserName . Parece que no hay ninguna función para eso en AuthenticationIdentityManager , así que cambio los datos usando EF (obtener el objeto de usuario para el usuario actual, cambiar UserName y guardar los cambios).

El problema es que las cookies de autenticación permanecen sin cambios, y la próxima solicitud falla ya que no hay tal usuario.

Con la autenticación de formularios en el pasado, utilicé el siguiente código para resolver esto.

var formsAuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; var isPersistent = FormsAuthentication.Decrypt(formsAuthCookie.Value).IsPersistent; FormsAuthentication.SetAuthCookie(newUserName, isPersistent);

¿Qué debo hacer con la identidad de asp.net para actualizar las cookies?

ACTUALIZAR

El siguiente código parece actualizar la cookie de autenticación.

var identity = new ClaimsIdentity(User.Identity); identity.RemoveClaim(identity.FindFirst(identity.NameClaimType)); identity.AddClaim(new Claim(identity.NameClaimType, newUserName)); AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant (new ClaimsPrincipal(identity), new AuthenticationProperties {IsPersistent = false});

El problema restante es: ¿cómo extraer el valor IsPersistent de la cookie de autenticación actual?