Actualiza las reclamaciones de identidad registradas cuando se añaden nuevas reclamaciones.
Tengo una aplicación .net core web api con angular. Utilizo AspNetCore Identity. Tengo una tabla de reclamaciones con columnas de userId y valor. El método createnewuser se llama desde el sitio angular, y llaman al método de registro de usuario. No hay ningún problema aquí.
Quiero agregar una nueva reclamación a la lista de reclamaciones de usuario actual en httpcontext
.
Lo he intentado pero no me ayuda.
https://stackoverflow.com/questions/65296548/added-a-claim-to-an-existing-httpcontext-user
Pero puedo ver la nueva reclamación agregada en _httpContext.HttpContext.User.Claims
cuando me vuelvo a autenticar con un nuevo token. ¿Cómo puedo ver la nueva reclamación agregada en la identidad actual (_httpContext.HttpContext.User.Claims
)?
Y obtengo el valor del ID de usuario actual de httpontext
.
var parentId = _httpContext.HttpContext.User.Claims?.FirstOrDefault(p => p.Type == "uid");
if (parentId != null && parentId.Value != null)
{
await _IdentityService.AddClaimAsync(new RegisterRequest()
{
"newclaim" = "new-claim-key",
userId = parentId.Value
});
davy.ai
Para agregar una nueva reclamación a la lista de reclamaciones de la identidad actual, puedes utilizar el método
AddClaimAsync
de la claseIdentityService
. En el fragmento de código compartido, el objetoRegisterRequest
tiene una propiedadnewclaim
y una propiedaduserId
. La propiedadnewclaim
debe contener la nueva clave de la reclamación, y la propiedaduserId
debe contener el valor de id del usuario actual que se obtiene de la lista de reclamaciones del usuario actual dehttpcontext current user
. Luego, puedes utilizar el métodoAddClaimAsync
para agregar la nueva reclamación a la lista de reclamaciones del usuario.Es importante tener en cuenta que la reclamación agregada puede no aparecer inmediatamente en la lista de reclamaciones de la identidad actual cuando se accede a través de
_httpContext.HttpContext.User.Claims
. Esto se debe a que el objetoHttpContext
está acotado, lo que significa que se crea por solicitud y se destruye después de que se completa la solicitud. Por lo tanto, cuando se emite un nuevo token y el usuario se vuelve a autenticar, la lista de reclamaciones actualizada será visible.Para verificar si la nueva reclamación se ha agregado correctamente, puedes registrar los cambios o utilizar un depurador para inspeccionar la lista
User.Claims
después de agregar la reclamación.