tutorial net español current asp asp.net asp.net-membership visual-studio-2013 asp.net-mvc-5 asp.net-identity

asp.net - español - current user asp net core



¿Cómo obtener una lista de usuarios de ASP.NET Identity? (4)

  1. Cree el proyecto ASP .NET MVC5 de forma predeterminada
  2. Cree tablas de ASP .NET Identity correctamente y cambie la cadena de conexión también.
  3. Para que los usuarios simplemente hagan la siguiente prueba A. Vaya a AccountController B. Cree cualquier método ficticio y póngalo allí

var context = new ApplicationDbContext(); var allUsers = context.Users.ToList();

Editar: esta pregunta está desactualizada

El Marco de Identidad era un objetivo móvil en el momento en que pregunté esto. Los autores cambiaron bastantes cosas y han desacoplado varias cosas, facilitando las cosas.

Eche un vistazo al proyecto Asp.NET Identity Sample en github .

Estoy creando una pequeña aplicación que requiere la administración de usuarios. No se permite el registro, en su lugar hay un superusuario que creará y modificará la información de inicio de sesión.

Estoy usando el nuevo sistema de membresía Identity de ASP.NET y, por supuesto, crear usuarios y agregar roles es fácil e intuitivo.

Ahora, mi pregunta: ¿cómo obtener una lista de usuarios que usan la clase AuthenticationIdentityManager que usa la clase generada AccountController? No pude encontrar una manera de acceder a la lista de usuarios desde mi controlador.

(Por cierto, el nuevo nombre "Identidad" puede sonar increíble para algunas personas, pero es un dolor buscarlo).

Editar : si trato de hacer esto

ApplicationDbContext UsersContext = new ApplicationDbContext(); UsersContext.Users.ToList(); // Exception

Obtengo una excepción Invalid column name ''Discriminator'' . La definición de ApplicationDbContext se genera automáticamente mediante el nuevo asistente de aplicación:

using Microsoft.AspNet.Identity.EntityFramework; namespace Cobranzas.Models { public class ApplicationUser : User { } public class ApplicationDbContext : IdentityDbContextWithCustomUser<ApplicationUser> { } }

Así que supongo que esa columna Discriminator es para separar ApplicationUser del User . Sin embargo, no existe en mi base de datos (que fue creada automáticamente por la aplicación).


Descubrí que no estaba utilizando el objeto ApplicationUser derivado para nada, así que simplemente seguí adelante y cambié todos los usos para el User antiguo. Luego acabo de cambiar la definición de ApplicationDbContext por lo siguiente:

public class ApplicationDbContext : IdentityDbContext< User, UserClaim, UserSecret, UserLogin, Role, UserRole, Token, UserManagement> { }

Y ahora puedo acceder a la lista de usuarios:

UsersContext = new ApplicationDbContext(); ... UsersContext.Users.ToList();

Sin embargo, creo que esto volverá y me atormentará en el futuro (probablemente necesite agregar más campos al User ), así que probablemente tendré que usar el mismo enfoque que en esta pregunta:

Obtener todos los nombres de roles en el sistema de identidad ASP.NET MVC5

Editar : Desde que tuve la necesidad de agregar una nueva propiedad, tuve que revertir mis cambios. Así que seguí adelante e hice una comparación línea por línea con el Proyecto de muestra de identidad ASP.NET, y descubrí que el proyecto generado tenía la siguiente línea:

IdentityManager = new AuthenticationIdentityManager(new IdentityStore());

mientras que la aplicación de muestra incluía el contexto de la base de datos en el constructor. Así que lo agregué en mi constructor, recreé la base de datos y el problema desapareció.

IdentityManager = new AuthenticationIdentityManager(new IdentityStore(new ApplicationDbContext()));


Para RTM, tendrá que desplegar a su DbContext o lo que sea que su implementación específica de la tienda tenga para enumerar a todos los usuarios. En la próxima versión, lo más probable es que agreguemos un método opcional IQueryable Users / Roles en las clases de administrador que las tiendas pueden implementar para exponer IQueryables para usuarios y tiendas.


using System.Linq; using System.Data; using System.Data.Entity; var db = new ApplicationDbContext(); var Users = db.Users.Include(u => u.Roles);