В настоящее время у меня есть проект, который пользователь B2C Azure для входа в систему.В лазури я использую 3 поля таможенных int, которые содержат результат выбора в каком-либо dropdownList.после входа в систему в моем HOME-контроллере я могу прочитать значение настраиваемого поля в моей самореализации по утверждению следующим образом:
System.Security.Claims.Claim claim = ClaimsPrincipal.Current.Claims.Where(c => c.Type == "extension_RegistrationComplete").SingleOrDefault();
if (claim != null)
retour = Convert.ToBoolean(claim.Value);
Так что я могу проверить, все ли настраиваемые поля заполнены, прежде чем продолжить.Если RegistrationComplete имеет значение false, я перенаправляю на страницу формы Step2 с просьбой выбрать параметры в раскрывающемся списке.Затем я сохраняю его в Azure с помощью API-интерфейса B2C.Но локальный ClaimsPrincipal не имеет обновления, поэтому пользователь застрял в цикле, потому что локальный RegistrationConplete всегда ложен.
Как мы можем обновить ClaimsPrincipal без повторной регистрации пользователя?В настоящее время я регистрирую пользователя с
HttpContext.GetOwinContext().Authentication.Challenge(authenticationProperties);
Спасибо.
Наконец, я использую этот код:
var Identity = HttpContext.User.Identity as ClaimsIdentity;
Identity.RemoveClaim(Identity.FindFirst("AnnounceCount"));
Identity.AddClaim(new Claim("AnnounceCount", "Updated Value"));
var authenticationManager =
System.Web.HttpContext.Current.GetOwinContext().Authentication;
authenticationManager.AuthenticationResponseGrant = new
AuthenticationResponseGrant(new ClaimsPrincipal(Identity), new
AuthenticationProperties() { IsPersistent = true });