gpt4 book ai didi

asp.net - 如何从 ASP.NET Identity 获取用户列表?

转载 作者:行者123 更新时间:2023-12-03 02:49:58 25 4
gpt4 key购买 nike

编辑:这个问题已经过时

在我提出这个问题时,身份框架是一个不断变化的目标。作者改变了很多东西,并且解耦了其他一些东西,使一切变得更容易。

看看 Asp.NET Identity Sample project on github .

<小时/>

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

我正在使用新的 ASP.NET Identity成员(member)系统,果然,创建用户和添加角色既简单又直观。

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

(顺便说一句,新名称“Identity”对某些人来说可能听起来很棒,但搜索起来很痛苦。)

编辑:如果我尝试这样做

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

我收到异常列名“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();

但是,我认为这将来会再次困扰我(我可能需要向 User 添加更多字段),所以我可能必须使用与这个问题:

Get all role names in ASP.NET MVC5 Identity system

编辑:由于我需要添加新属性,因此我必须恢复更改。于是我继续与 ASP.NET Identity 示例项目进行逐行比较,发现生成的项目有以下行:

IdentityManager = new AuthenticationIdentityManager(new IdentityStore());

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

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

关于asp.net - 如何从 ASP.NET Identity 获取用户列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18773838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com