Identidade do ASP.NET, adicione outro usuário à função instantaneamente (eles não precisam sair e entrar novamente)
Primeiro de tudo, estou ciente desta pergunta:O MVC 5 AddToRole requer logout antes de funcionar?
e este:O que é a interface IUserSecurityStampStore <TUser> do ASP.NET Identity?
portanto, não marque isso como duplicado.
Estou tentando adicionar outro usuário a uma função (ou seja, o usuário que estamos adicionando à função não é o usuário atual. Se for, a resposta à primeira pergunta à qual vinculei será suficiente.)
Igual a:
IdentityResult result = await userManager.AddToRoleAsync(userID, roleName);
As duas situações em que estou fazendo isso são: em uma página de administrador, onde o usuário atual é o administrador; e um webhook protegido com autenticação básica (onde não há usuário atual).
O PROBLEMA: se o usuário ao qual essa alteração se aplica estiver conectado e usando o aplicativo, preciso que a alteração "adicionar à função" seja aplicada instantaneamente. Eles não devem ter que sair e entrar novamente para que a alteração ocorra, e ela precisa acontecer imediatamente.
Obrigado a todos.
EDIT: A propósito, User.IsInRole (roleName) requer logout e logon para refletir a inclusão na nova função. UserManager.IsInRole (userID, roleName) não, porque (presumo) ele vai direto para as tabelas do banco de dados para verificar. Mas se o usuário acessar um método de ação protegido com a função à qual acabou de ser adicionado, ainda precisará fazer login novamente, o que é justo. Ainda curioso se há uma maneira de contornar isso.
EDIT: Aqui está o código-fonte para o atributo Autorizar:https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/AuthorizeAttribute.cs
Ele usa User.IsInRole, que é basicamente o motivo pelo qual precisamos fazer login novamente. Parece que o método a ser substituído é AuthorizeCore (HttpContextBase httpContext). Eu não sou corajoso ou bom o suficiente para mexer com isso agora, mas se você quiser experimentar muitas pessoas acharão isso útil.