【发布时间】:2018-12-28 18:42:05
【问题描述】:
我有几个问题。我有一个带有 identityserver4 和 EF 的 asp.net 核心应用程序的设置。效果很好。现在我想知道我必须以哪种方式将项目存储在数据库中。
我有七个用于身份数据库的表:
AspNetUSerRoleClaims - claims for roles (which roles has access to what)
AspNetRoles - roles of the user
AspNetUserClaims - claims of the user like firstname, country
AspNetUserLogins - how to use this table?
AspNetUserRoles - roles for users
AspNetUsers - user stored here
AspNetUserTokens - how to use this table
现在我已经在数据库中注册了一个用户和几个角色,并将连接设置为 AspNetUserRoles(哪个角色有用户)。 现在我想通过注册向用户添加更多信息,例如国家、给定名称、家庭名称。但是我必须将它们存储在哪里。仅在 AspNetUserClaims 中还是应该将信息存储在 AspNetUser 表中(通过 ApplicationUser 和 AspNetUser 表中的额外列)?
我如何将项目存储在 AspNetLogin 和 AspNetToken 表中,或者这是否由 Identityserver 自动完成?
提前感谢您的回答
【问题讨论】:
-
是否存储为列或声明主要取决于意见 - 两种方法都有效。 IdentityServer 根本不使用 AspNet* 表 - AspNetLogins 存储链接到 AspNetUsers 的第三方登录(例如 Facebook、Google),AspNetUserTokens 用于链接到 AspNetUsers 和 AspNetLogins 的第三方登录令牌。
-
好的,谢谢。我认为 Identityserver 使用声明表将它们放入 id-token 或 access-token 中?我看到还有一个 IdentityClaims 表,用户声明如何与 identityClaims 一起工作?
-
不是直接的,不是的。请记住,IS4 不仅适用于身份 - 您可以在内存中拥有用户等,这些用户不可能从数据库中的 AspNetUserClaims 获得声明。这是一个扩展点 -
IProfileService- 它位于 IS4 本身和 Identity 之间,用于在两者之间进行映射。 IdentityClaims 是一个 IS4 表,但这些代表了哪些声明可用于哪些 IdentityResources 的概念。这是一个很大的话题...... -
啊,隧道尽头有光。非常感谢,现在我明白了
标签: asp.net-mvc asp.net-identity identityserver4