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 МБ.

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