ASP.NET Identity, мгновенно добавьте еще одного пользователя в роль (им не нужно выходить из системы и входить снова)

Прежде всего, я знаю об этом вопросе:MVC 5 AddToRole требует выхода из системы, прежде чем он работает?

и этот:Что такое интерфейс IUserSecurityStampStore <TUser> в ASP.NET Identity?

поэтому, пожалуйста, не отмечайте это как дубликат.

Я пытаюсь добавить в роль другого пользователя (т.е. пользователь, которого мы добавляем в роль, не является текущим пользователем. Если это так, то ответ на первый вопрос, с которым я связан, является достаточным.)

Вот так:

IdentityResult result = await userManager.AddToRoleAsync(userID, roleName);

Я делаю это в следующих двух ситуациях: со страницы администратора, где текущий пользователь является администратором; и веб-крюк, защищенный базовой аутентификацией (где нет текущего пользователя вообще).

ПРОБЛЕМА: если пользователь, к которому относится это изменение, вошел в систему и использует приложение, мне нужно, чтобы изменение «добавить в роль» вступило в силу немедленно. Им не нужно выходить из системы и снова входить в систему, чтобы изменения произошли, и это должно произойти немедленно.

Спасибо всем.

РЕДАКТИРОВАТЬ: Кстати, User.IsInRole (roleName) требует выхода из системы и входа в систему, чтобы отразить добавление в новую роль. UserManager.IsInRole (userID, roleName) нет, потому что (я предполагаю) он идет прямо к таблицам базы данных для проверки. Но если пользователь нажимает на метод действия, защищенный ролью, к которой он только что был добавлен, ему все равно придется снова войти в систему, что вполне справедливо. Все еще любопытно, есть ли способ обойти это.

РЕДАКТИРОВАТЬ: Вот исходный код для атрибута Authorize:https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/AuthorizeAttribute.cs

Он использует User.IsInRole, поэтому нам необходимо снова войти в систему. Кажется, что метод для переопределения - AuthorizeCore (HttpContextBase httpContext). Я не смел и не достаточно хорош, чтобы возиться с этим прямо сейчас, но если вы хотите пойти, многие найдут это полезным.

Ответы на вопрос(1)

Ваш ответ на вопрос