Atualizar a função do usuário atual quando alterado na estrutura de identidade do ASP.NET?
Usando o VS 2013, modelo MVC padrão e a estrutura do provedor de identidade
O usuário está logado e eu tenho:
//....
UserManager.AddToRole(User.Identity.GetUserId(), "Members"); # Line X
RedirectToAction("Index", "Members");
E o controlador de membros é o seguinte:
[Authorize(Roles="Members")]
public class MembersController : Controller
{
// GET: Members
public ActionResult Index()
{
return View();
}
}
Após a execução da linha X, posso confirmar que o usuário foi adicionado à tabeladbo.AspNetUserRoles
. No entanto, o usuário ao alcançar o controlador Membros falha na verificação da função.User.IsInRole("Members")
retorna falso.
Se o usuário fizer logoff e depois efetuar login novamente, o acesso ao controlador Members será executado, ou seja,User.IsInRole("Members")
agora retorna verdadeiro.
Existe algum cache? Por que o atraso? Como supero isso?
Eu também tentei converter o método na Linha X para um método assíncrono e useiUserManager.AddToRoleAsync
. O mesmo efeito atrasado ainda está lá.