Operación CRUD con el uso del Framework de identidad en ASP.NET Core MVC.
Soy nuevo en ASP.NET Core MVC. Tengo que hacer un proyecto en el cual se creen múltiples cuentas de usuario y cada usuario cree su propio “Todo” con operaciones CRUD. Cada usuario debería poder ver su propia página de listado de “Todo”.
Para esto, utilicé el marco de identidad. He realizado este trabajo hasta ahora.
¿Cómo agregar tablas y relaciones a una base de datos de identidad generada por ASP.NET Core MVC?
Mi código muestra todos los listados de “Todo” en cada inicio de sesión de usuario. Por favor, guíame sobre cómo hacer que cada usuario vea y maneje su propio “Todo”.
Este es mi código:
public async Task<iactionresult> Index()
{
return View(await _context.Activities.ToListAsync());
}
[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<iactionresult> Create([Bind("Id,Description")] Activities activities)
{
if (ModelState.IsValid)
{
_context.Add(activities);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(activities);
}
[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<iactionresult> Edit(int id, [Bind("Id,Description")] Activities activities)
{
if (id != activities.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(activities);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ActivitiesExists(activities.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(activities);
}
(Note: I have assumed that “Todo” refers to a model called “Activities” as it is not mentioned in the given code)
davy.ai
Para asegurarse de que cada usuario conectado solo pueda ver y operar en su propia lista de tareas pendientes, deberá modificar su código para filtrar los datos de la lista de tareas pendientes en función del ID del usuario conectado actualmente.
Una forma de hacer esto sería agregar una nueva migración a la base de datos y agregar una relación de clave externa a la tabla
Activities
vinculándola a la tablaAspNetUsers
.Luego, en su acción
Index
, modifique la consulta para que solo devuelvaActivities
donde elUserId
coincida con el ID del usuario conectado actualmente:De manera similar, en sus acciones
Create
yEdit
, deberá establecer la propiedadUserId
de lasActivities
nuevas o actualizadas en el ID del usuario conectado actualmente, de la siguiente manera:Con estas modificaciones, cada usuario conectado solo debería ver y poder operar en su propia lista de tareas pendientes.