MVC 5:我应该从 IdentityUser 类继承我的 User 吗?

2024-01-12

我试图学习 Asp.Net Identity 和 在这个tutorial http://blogs.msdn.com/b/webdev/archive/2013/10/20/building-a-simple-todo-application-with-asp-net-identity-and-associating-users-with-todoes.aspx,

在 Models\AppModels,cs 中创建实体框架 Code First ToDo 模型 part MyUser班级 继承自IdentityUser类和MyDbContext继承自IdentityDbContext<MyUser>班级。这是为什么?

可以说我有一个User保存我的 Web 应用程序用户的所有信息的类,该类是否应该继承自 IdentityUser,并且我应该DbContext继承自IdentityDbContext<User>?

另外,继承 dbcontext 类有什么优点IdentityDbContext<TClass>过平原DbContext类如 MVC 4 中所做的那样


ASP.Net MVC 5.0 使用 OWIN 实现实现即插即用。

有几个为此设计的界面

FROM Scott Allen Article http://odetocode.com/blogs/scott/archive/2013/11/25/asp-net-core-identity.aspx

IUser

用户对象必须实现 IUser 接口,该接口要求每个 用户至少有一个 ID 和一个名字。最值得注意的方面 IUser 是字符串类型的 Id 属性。字符串非常适合 GUID 但是当使用整数作为键时可能会有点棘手,就像常见的那样 SQL 服务器。更多详细信息将在以后的帖子中介绍。

用户存储库

Core Identity 组件中的 I*Store 接口被分解以提供各种级别的功能。

IUserStore 定义了您想要为用户提供的最低限度的功能 – 创建、检索、更新和删除 (CRUD) 功能。如果你的 网站希望允许用户创建带有密码的本地帐户, 你需要一个实现 IUserPasswordStore 的组件(这是一个 IUserStore)。对于第三方登录(Twitter 和 Facebook,对于 例如),添加 IUserLoginStore,对于声明存储,有一个 IUserClaimStore。另外,上面的类图中没有显示的是 角色接口的集合(IRole、IUserRoleStore 等)。让 关于角色与主张的争论开始了。

用户管理器

UserManager 是一个具体类,它提供了处理用户信息的域逻辑。 UserManager 知道何时对密码进行哈希处理、何时验证用户以及如何管理声明。

UserManager 有一些扩展点,例如,管理器有许多属性,您可以使用它们来设置自定义用户验证器(任何实现 IIdentityValidator 的对象)、自定义密码验证器和自定义密码哈希器。主要的扩展点是通过 UserManager 构造函数,它允许您传入任何实现 IUserStore 的对象。如果您想使用 UserManager 来管理存储在 SQL Server 中的用户信息,我们将在后面的文章中查看预构建的类来执行此操作,但创建 IUserStore 来使用文档数据库或其他数据库也很容易存储形式。

请记住,IUserStore 不知道如何使用用户密码,只有 IUserPasswordStore 知道密码。 UserManager 知道不同的核心接口,并将尝试使用构造函数中给出的存储对象的功能。例如,如果您使用 FindByIdAsync,则 UserManager 可以使用用户存储按 ID 查询用户,但如果您调用 FindAsync(需要用户名和密码),并且底层存储未实现 IUserPassword 存储接口, UserManager 将被迫抛出异常。

使用单个具体类来处理从用户到密码再到声明的所有内容是很棘手的,并且必须进行权衡。我们还将在接下来的帖子中讨论一些权衡。

EDIT:查看实施 ASP.Net 身份 http://odetocode.com/blogs/scott/archive/2014/01/20/implementing-asp-net-identity.aspx

现在 ASP.Net 身份支持通用IdentityUser<TKey>在它是一个字符串之前,即 UserId 是一个字符串

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC 5:我应该从 IdentityUser 类继承我的 User 吗? 的相关文章

随机推荐