ASP.Net MVC 5.0使用OWIN为实行即插即用。
有几个专门为这个
FROM Scott Allen Article
IUSER
用户对象必须实现IUSER接口,这需要每个 用户界面至少有一个ID和一个名字。 IUser最显着的方面是string类型的Id属性。字符串适用于GUID ,但在使用整数键时可能会有点棘手,这与SQL Server的 相同。更多详细信息在未来的帖子。
IUserStore
的我在核心身份总成*存储接口因素提供的功能性的各种水平。
IUserStore定义了用户想要的最低功能 - 创建,检索,更新和删除(CRUD)功能。如果您的 网站想要允许用户使用密码创建本地帐户,您将需要一个实现IUserPasswordStore的组件(这是一个 IUserStore)。对于第三方登录(Twitter和Facebook,例如 示例),请添加IUserLoginStore,并且声明存储空间为IUserClaimStore 。另外,在上面的类图中没有显示,角色的接口(IRole,IUserRoleStore等)的集合是 。让角色与索赔开始讨论。
的UserManager
的的UserManager是一个具体的类,它是提供域逻辑用于与用户信息的工作的UserManager。 UserManager知道何时散列密码,何时验证用户以及如何管理声明。
UserManager有一些扩展点,例如,管理器有许多属性可用于设置自定义用户验证器(任何实现IIdentityValidator的对象),自定义密码验证器和自定义密码筛选器。主要的扩展点是通过UserManager构造函数,它允许你传入任何实现IUserStore的对象。如果您想使用UserManager来管理存储在SQL Server中的用户信息,我们将在后面的文章中查看预构建的类来执行此操作,但创建IUserStore以处理文档数据库或其他存储形式。
记住一个IUserStore不知道如何处理用户密码,只有一个IUserPasswordStore知道密码。 UserManager知道不同的核心接口,并将尝试使用构造函数中给出的存储对象的功能。例如,如果使用FindByIdAsync,UserManager可以使用用户存储按ID查询用户,但如果调用FindAsync(需要用户名和密码),并且底层存储没有实现IUserPassword存储接口, UserManager将被迫抛出异常。
对于从用户到密码到声明的所有内容,使用单个具体类很困难,必须进行折衷。我们也会看看即将发布的帖子中的一些权衡。
编辑:退房Implementing ASP.Net Identity
现在ASP.Net身份支持泛型IdentityUser<TKey>
这是一个字符串之前,即用户ID是一个字符串
最简单的答案是,如果您从IdentityUser和IdentityDbContext继承,您还可以使用Microsoft的UserStore类来管理持久性,而无需额外的工作。否则,你会从头开始实现你自己的UserStore,这真的不是太难。 – OdeToCode