У меня есть промежуточное программное обеспечение, предназначенное для выполнения некоторой логики. Частью этой логики является обновление значения заявки после аутентификации пользователя. Мне интересно, возможно ли это сделать?
public class MyMiddleware
{
public async Task Invoke(HttpContext context)
{
//logic omitted
var claims = new List<Claim> { new Claim("MyValue", "test") }
context.User.AddIdentity(new ClaimsIdentity(claims));
}
}
Единственный подход, который я нашел до сих пор, - в приведенном выше примере. Однако я не совсем понимаю этот подход. Вышеупомянутое переопределит какие-либо существующие претензии или будет иметь другое поведение?
Редактировать: В моем тестировании приведенный выше код не работает. Поскольку претензия фактически никогда не добавляется, когда я смотрю на нее по моему следующему запросу.
Я также пробовал описанное ниже, но оно имело тот же эффект, претензии не сохранялись при следующем запросе.
public class MyMiddleware
{
public async Task Invoke(HttpContext context)
{
//logic omitted
var claimsIdentity = (ClaimsIdentity) context.User.Identity;
var identity = new ClaimsIdentity(claimsIdentity);
var myClaim = identity.Claims.FirstOrDefault(x => x.Type.Equals(userExpirationName));
if(myClaim != null) identity.RemoveClaim(myClaimName);
identity.AddClaim(new Claim(myClaimName, "test"));
context.User.AddIdentity(identity);
}
}