¿Actualizar la función del usuario actual cuando se cambia en el marco de identidad ASP.NET?
Usando VS 2013, la plantilla MVC estándar y el marco del proveedor de Identidad
El usuario ha iniciado sesión y tengo:
//....
UserManager.AddToRole(User.Identity.GetUserId(), "Members"); # Line X
RedirectToAction("Index", "Members");
Y el controlador de Miembros es el siguiente:
[Authorize(Roles="Members")]
public class MembersController : Controller
{
// GET: Members
public ActionResult Index()
{
return View();
}
}
Después de ejecutar Line X, puedo confirmar que el usuario está agregado a la tabladbo.AspNetUserRoles
. Sin embargo, el usuario al llegar al controlador Miembros falla la verificación de roles.User.IsInRole("Members")
devuelve falso
Si el usuario cierra la sesión y luego vuelve a iniciarla, se realizará el acceso al controlador Miembros, es decirUser.IsInRole("Members")
ahora vuelve verdadero.
¿Hay algo de caché? ¿Por qué la demora? ¿Cómo lo supero?
También intenté convertir el método en la línea X a un método asíncrono y uséUserManager.AddToRoleAsync
. El mismo efecto retardado sigue ahí.