es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
   });
Tags:  , , ,

Answer

  1. Avatar for 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 clase IdentityService. En el fragmento de código compartido, el objeto RegisterRequest tiene una propiedad newclaim y una propiedad userId. La propiedad newclaim debe contener la nueva clave de la reclamación, y la propiedad userId debe contener el valor de id del usuario actual que se obtiene de la lista de reclamaciones del usuario actual de httpcontext current user. Luego, puedes utilizar el método AddClaimAsync 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 objeto HttpContext 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.

Comments are closed.