Обновить роль текущего пользователя при изменении в платформе удостоверений ASP.NET?
Использование VS 2013, стандартный шаблон MVC и инфраструктура провайдера идентификации
Пользователь вошел в систему, и у меня есть:
//....
UserManager.AddToRole(User.Identity.GetUserId(), "Members"); # Line X
RedirectToAction("Index", "Members");
И контроллер Члены выглядит следующим образом:
[Authorize(Roles="Members")]
public class MembersController : Controller
{
// GET: Members
public ActionResult Index()
{
return View();
}
}
После выполнения строки X я могу подтвердить, что пользователь добавлен в таблицуdbo.AspNetUserRoles
, Тем не менее, пользователь при достижении контроллера членов не проходит проверку роли.User.IsInRole("Members")
возвращает ложь
Если пользователь выходит из системы, а затем снова входит в систему, то доступ к контроллеру членов будет проходить, т.е.User.IsInRole("Members")
теперь возвращает истину.
Есть ли какое-то кеширование? Почему задержка? Как мне это преодолеть?
Я также попытался преобразовать метод в строке X в асинхронный метод и использовалUserManager.AddToRoleAsync
, Тот же задержанный эффект все еще там.