Estoy tratando de entender cómo funciona esto sin agregar roles, pero tal vez no sea así. Estoy siguiendo el tutorial de Microsofts sobre la protección de los datos del usuario con Autorizar, pero sigo teniendo problemas para entender esto sin funciones

En mi base de datos, tengo las tablas de identidad de AspNet y algunas tablas personalizadas. ¿Hay alguna forma de mostrarles los datos de los usuarios que iniciaron sesión desde la tabla personalizada? He mirado aquí, pero probablemente no estoy buscando lo correcto.

Intenté obtener el correo electrónico del usuario desde el contexto y verificar el userManager para ese correo electrónico si se encuentra y luego enviarlo a una lista, pero eso solo devuelve nulo.

public async Task OnGetAsync()
        {
            var employee = from e in Context.EmpInfo
                select e;
           
            var currentUserId = UserManager.GetUserId(User);

            employee = employee.Where(e =>e.OwnerId == currentUserId);
            
            EmpInfo = await employee.ToListAsync();
        }
0
Kent Hub 24 ago. 2020 a las 01:17

1 respuesta

La mejor respuesta

¿Hay alguna forma de mostrarles los datos de los usuarios que iniciaron sesión desde la tabla personalizada?

estaban configurando OwnerId en el ID del rol de administrador

En la tabla AspNetUsers como se muestra a continuación, Id de usuario es una clave principal. Para implementar relaciones uno a uno entre AspNetUsers y Employee, puede almacenar el AspNetUsers.Id correspondiente en OwnerId de un empleado específico, luego puede obtener información detallada del empleado basada en los datos recuperados. ID de usuario

enter image description here

¿Supongo que tendría que comparar el correo electrónico con el correo electrónico?

Si conserva la información del correo electrónico en las tablas AspNetUsers y Employee, obtener la información correspondiente de los empleados comparando el correo electrónico como mencionó podría ser un enfoque alternativo.

//find user and get user's email
var user = await _userManager.GetUserAsync(User);
var user_email = user?.Email.ToString();

//...
//query employee table with retrieved user_email 
//code logic here...

Además, tenga en cuenta que si no configura RequireUniqueEmail en su sistema de identidad ASP.NET Core, los usuarios pueden tener correos electrónicos duplicados.

0
Fei Han 25 ago. 2020 a las 03:06