加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何从ASP.NET身份获取用户列表?

发布时间:2020-12-15 19:12:40 所属栏目:asp.Net 来源:网络整理
导读:编辑:此问题已过时 身份框架在我问这个时刻是一个移动的目标。作者改变了很多事情,他们已经解耦了几件事情,使事情更容易。 看看Asp.NET Identity Sample project on github。 我正在创建一个需要用户管理的小应用程序。不允许注册,而是有一个超级用户将
编辑:此问题已过时

身份框架在我问这个时刻是一个移动的目标。作者改变了很多事情,他们已经解耦了几件事情,使事情更容易。

看看Asp.NET Identity Sample project on github。

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

我使用新的ASP.NET Identity成员系统,并且确定,创建用户和添加角色是容易和直观。

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

(顺便说一下,新名字“身份”可能听起来真棒的一些人,但它是一个痛苦寻找)。

编辑:如果我尝试这样做

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列是用于从User分离ApplicationUser。但是,它不存在于我的数据库(由应用程序自动创建)。

解决方法

我发现我没有使用派生的ApplicationUser对象的任何东西,所以我只是继续改变它的所有用途为普通老用户。然后我只是改变了ApplicationDbContext的定义为:
public class ApplicationDbContext : IdentityDbContext<
    User,UserClaim,UserSecret,UserLogin,Role,UserRole,Token,UserManagement>
{
}

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

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

但是,我认为这会回来,困扰我在将来(我可能需要添加更多的字段给用户),所以可能我必须使用相同的方法,在这个问题:

Get all role names in ASP.NET MVC5 Identity system

编辑:因为我需要添加一个新的属性,我不得不还原我的更改。所以我继续前进,并与ASP.NET Identity Sample Project进行了逐行比较,发现生成的项目有以下行:

IdentityManager = new AuthenticationIdentityManager(new IdentityStore());

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读