gpt4 book ai didi

database-design - 将 ASP.net 成员资格和 openid 用户存储在新的用户表中

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

为了存储使用 OpenId 登录的人的用户信息,我计划创建一个用户表。

我的问题是这个新用户表将包含我希望 asp.net 成员(member)用户也能够填写的新字段(配置文件数据)。

我的计划是当用户需要用户名和密码时,他们注册并将信息插入到 asp.net_Membership 中,然后将他们的 guid,username,createDate 复制到新的用户表中,这样我就可以在代码中查找用户中的数据表,他们是否使用 OpenId 或 asp.net 成员(member)资格注册都无关紧要。

我想覆盖 Membership.GetUser 以便它查找我的新用户表并添加 web.config 配置文件属性。

使用 Membership.GetUser 而不是使用会更好的性能(我将在其中调用新的 User 表):

User user = _repository.GetUser(userId);

我的应用程序已经在运行,我需要添加对某些页面的引用以支持 _repository,所以我只是在考虑性能。

我创建新用户表的计划可以吗?我不喜欢重复的想法,但如果将来我想要更改用户名,更新新用户表和 asp.net_Membership 表并不麻烦。

我应该覆盖 GetUser 并在 web.config 中添加配置文件属性还是调用我自己的 User 对象?

创建一个新的用户表并复制核心数据是最好的方法吗?

最佳答案

创建一个映射 的新表providerUserKey 给用户的 OpenID .当用户使用他们的 注册时OpenID ,添加 OpenID providerUserKey 映射到这个新表。当用户返回您的站点并使用他们的 登录时OpenID , 查找他们的 providerUserKey 从映射表。使用 providerUserKey 使用他们的 登录他们providerUserKey .

这种方法有许多优点。

  • 它允许用户使用用户名/密码注册和登录。
  • 它允许用户将多个 OpenID 注册到他们的个人资料中。
  • 映射表独立于成员资格 API 的其余部分,因此您可以随意更改它而不会破坏提供程序。
  • 映射表可以像两列一样简单,在 OpenID 列上有一个索引。

  • 您可能会考虑散列用户的 OpenID,将其转换为 Guid,然后存储 Guid 而不是完整的 URL。这将使数据库列和索引更小更快。

    关于database-design - 将 ASP.net 成员资格和 openid 用户存储在新的用户表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087007/

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