Как получить список пользователей из ASP.NET личность?

Edit: этот вопрос устарел

структура идентификации была движущейся целью в тот момент, когда я спросил об этом. Авторы изменили довольно много вещей, и они отделили несколько вещей, сделав вещи проще.

взгляните на Asp.NET образец идентичности проекта на github.


Я создаю небольшое приложение, которое требует от руководства пользователей. Регистрация не разрешена, вместо этого есть суперпользователь это создаст и изменит информацию для входа.

Я использую новый ASP.NET личность система членства и, конечно же, создание пользователей и добавление ролей легко и интуитивно понятны.

теперь мой вопрос: Как получить список пользователей, используя класс AuthenticationIdentityManager, который используется созданным классом AccountController? Я не мог найти способ получить доступ к списку пользователей с моего контроллера.

(кстати, новое название "Identity" может звучит потрясающе для некоторых людей, но это боль для поиска.)

редактировать: если я попытаюсь сделать это

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

Я получаю исключение Invalid column name 'Discriminator'. Определение ApplicationDbContext генерируется автоматически мастером создания приложения:

using Microsoft.AspNet.Identity.EntityFramework;

namespace Cobranzas.Models
{
    public class ApplicationUser : User
    {

    }
    public class ApplicationDbContext : IdentityDbContextWithCustomUser<ApplicationUser>
    {

    }
}

так что я предполагаю, что Discriminator столбец предназначен для различения ApplicationUser С User. Однако он не существует в моей базе данных (которая была создана автоматически приложением.)

5 ответов


я узнал, что я не использовал производные


  1. создать по умолчанию
  2. создать ASP .NET Identity таблицы правильно и изменить строку подключения как хорошо.
  3. чтобы получить пользователей, просто выполните следующий тест А. поехать в AccountController B. создайте любой фиктивный метод и поместите туда
var context = new ApplicationDbContext();

var allUsers = context.Users.ToList();

enter image description here


для RTM вам придется опуститься до вашего DbContext или независимо от того, что ваша конкретная реализация магазина должна перечислять всех пользователей. В следующем выпуске мы, скорее всего, добавим необязательный IQueryable метод Users / Roles в классах диспетчера, которые магазины могут реализовать для предоставления IQueryables как для пользователей, так и для магазинов.


using System.Linq;
using System.Data;
using System.Data.Entity;

        var db = new ApplicationDbContext();
        var Users = db.Users.Include(u => u.Roles);

если мы можем использовать следующий тип Constructor на Identity AccountController.

public AccountController(ApplicationUserManager userManager,
            ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
{
      UserManager = userManager;
      AccessTokenFormat = accessTokenFormat;
}

public ApplicationUserManager UserManager
{
     get
     {
          return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
     }
     private set
     {
          _userManager = value;
     }
}

затем мы можем напрямую использовать UserManager объект, чтобы получить список пользователей, как

var userList= UserManager.Users.ToList();