ASP.NET Identity не «сохраняет» обновленное утверждениеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ASP.NET Identity не «сохраняет» обновленное утверждение

Сообщение Anonymous »

Коротко говоря, я использую Identity и в своем решении создал страницу настроек пользовательской учетной записи, которая отлично работает. Проблема в том, что у меня есть пользователи FirstName и LastName в файле _Layout.cshtml. Имя задается имеющимся у меня собственным вспомогательным методом:

Код: Выделить всё

public static MvcHtmlString GetUsersFirstAndLastName(this HtmlHelper helper)
{
string fullName = HttpContext.Current?.User?.Identity?.Name ?? string.Empty;

var userIdentity = (ClaimsPrincipal)Thread.CurrentPrincipal;
var nameClaim = identity?.FindFirst("fullname");

if (nameClaim != null)
{
fullName = nameClaim.Value;
}

return MvcHtmlString.Create(fullName);
}
Этот метод отлично работает, пока пользователь не зайдет в свой профиль и не обновит свое имя. Если они меняют свое имя с Джорджа на Боб, то, когда они посещают мой веб-сайт, этот метод по-прежнему отображает их имя как Джордж, пока они не выйдут из системы и не войдут снова.

Что я сделал, чтобы исправить это, так это то, что когда они обновляли свое имя в настройках учетной записи, я добавил некоторый код, чтобы удалить их старое утверждение FullName и добавить новое, например это:

Код: Выделить всё

var identity = User.Identity as ClaimsIdentity;

// check for existing claim and remove it
var currentClaim = identity.FindFirst("fullName");
if (currentClaim != null)
identity.RemoveClaim(existingClaim);

// add new claim
var fullName = user.FirstName + " " + user.LastName;

identity.AddClaim(new Claim("fullName", fullName));
С помощью этого фрагмента кода представление _Layout теперь обновляет имя (в нашем предыдущем примере Джордж теперь изменится на Боб ). Однако в тот момент, когда вы переходите из этого представления в другое место на веб-сайте или обновляете страницу, оно снова меняется на Джорджа.

Поскольку я все еще немного новичок в идентификации, я немного озадачен, почему это новое обновленное утверждение не работает после того, как они переходят на другую страницу или обновляются. Любая помощь приветствуется. :)

Подробнее здесь: https://stackoverflow.com/questions/390 ... ated-claim
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ASP.NET Core 8 OpenID Connect — утверждение SUB отсутствует в User.Identity
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • ASP.NET Core 8 OpenID Connect — утверждение SUB отсутствует в User.Identity
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Служба для типа «Microsoft.AspNetCore.Identity.UserManager`1[Microsoft.AspNetCore.Identity.IdentityUser]» не зарегистрир
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Добавить свойство в Identity, чтобы иметь user.identity.score
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Добавить свойство в Identity, чтобы иметь user.identity.score
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»