Edit: This question is outdated

在我提出这个问题时,身份框架是一个移动的目标.作者们改变了很多事情,并将其他一些事情解耦,使一切变得更容易.

请看一下Asp.NET Identity Sample project on github号.


我正在创建一个需要用户管理的小应用程序.不允许注册,而是有一个超级用户将创建和修改登录信息.

我使用的是新的ASP.NET Identity会员制,毫无疑问,创建用户和添加角色非常简单直观.

现在,我的问题是:如何使用生成的AccountController类使用的AuthenticationIdentityManager类获取用户列表?我找不到从控制器访问用户列表的方法.

(顺便说一句,"身份"这个新名字对一些人来说可能听起来很棒,但搜索起来很痛苦.)

Edit:如果我试着这么做

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栏是用来区分ApplicationUserUser的.但是,它不存在于我的数据库中(该数据库是由应用程序自动创建的)

推荐答案

我发现我没有使用派生的ApplicationUser对象来做任何事情,所以我只是继续,把它的所有用途都改成了普通的User.然后我改变了ApplicationDbContext的定义如下:

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

现在我可以访问用户列表:

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

然而,我认为这会在future 困扰我(我可能需要在User中添加更多字段),所以我可能必须使用与本问题相同的方法:

Get all role names in ASP.NET MVC5 Identity system

Edit:因为我需要添加一个新的属性,所以我不得不恢复我的更改.所以我继续与ASP进行了逐行比较.NET Identity示例项目,并发现生成的项目具有以下行:

IdentityManager = new AuthenticationIdentityManager(new IdentityStore());

而示例应用程序在构造函数中包含了数据库上下文.所以我把它添加到我的构造函数中,重新创建了数据库,问题就消失了.

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

Asp.net相关问答推荐

ASP.NET Core 延迟加载始终返回 null

无法加载文件或程序集.无效指针(HRESULT 异常:0x80004003 (E_POINTER))

如何向 Array.IndexOf 添加不区分大小写的选项

asp.net 单选按钮分组

下载功能在 asp.net 的更新面板中不起作用

为什么默认情况下不允许 GET 请求返回 JSON?

有没有办法在外部 javascript 文件中使用<%= someObject.ClientID %>?

在属性中实现逻辑是一种好习惯吗

你如何确定哪个验证器失败了?

学习什么 - Ruby on Rails 或 ASP .NET MVC...鉴于熟悉 ASP .NET

如何从 HTTP 请求中获取 MAC 地址?

缩小失败.返回未缩小的内容

MVC5 身份验证中的......与主域之间的信任关系失败

ASP.NET Core 2.0 为同一端点结合了 Cookie 和承载授权

如何从后面的 ASP.NET 代码访问 HTML 表单输入

Azure 网站 301 重定向 - 我应该把它放在哪里?

如何告诉 RadioButtonList 不生成表格

配置授权服务器端点

POST 字符串到 ASP.NET Web Api 应用程序 - 返回 null

如何将 DataTable 转换为类 Object?