首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将开放ID与我当前的登录系统结合在一起?

将开放ID与我当前的登录系统结合在一起?
EN

Stack Overflow用户
提问于 2009-10-18 10:27:00
回答 3查看 355关注 0票数 4

我目前正在我的网站建立开放身份认证,我有困难将它与我目前的登录系统和数据库.我在柏拉图上读过这篇文章&它推荐这种类型的表来存储openid信息。

代码语言:javascript
复制
create table user_openids (
  openid_url varchar(255) not null,
  primary key (openid_url),

  user_id int not null,
  index (user_id)
);

这是我现在的用户信息表。

代码语言:javascript
复制
Userid(PRIMARY) | username(UNIQUE) | password | Email

Userid用于引用用户-评论、评级等的详细信息(因此它作为用户标识符进入注释表和评等表)。

我想要一个类似于堆栈溢出使用的系统,只要使用您的开放ID登录,它就会给您一个未知的(OPENID-provider)显示名称.同时保持我目前的登录系统完好无损。

1)如何在不影响当前登录设置的情况下,将用户的开放ID详细信息添加到当前用户信息表中?

2)当前我使用用户id(为每个用户生成唯一的)存储在会话中以维护登录。如果有开放的ID,我现在该怎么办?

*我的想法(我不知道我是否正确)

-添加一个open id字段来存储每个用户的开放id提供程序提供的惟一的开放id url,并将其设置为空用于非开放id用户。

-使用户id成为文本字段,并存储打开的id url的md5 (将其存储在会话中以维护登录)。

-我不知道如何处理为每个用户设置为唯一的显示名称/用户名,因为我想显示未知(OPENID_provider)(对于使用open-id的用户),它可以从配置文件设置中更改.

任何建议都是helpful....Thanks

EN

回答 3

Stack Overflow用户

发布于 2009-11-05 19:12:36

您所显示的表布局的思想是有1:多数来自用户:openid。

因此,不需要对users表进行更改。

当有人使用OpenID登录时,您将检查该OpenID是否位于openids表中。如果是这样的话,您就拥有了用户的user_id,并且已经完成了。

否则,创建一个新用户(没有设置用户名/密码),并为他们插入一个(openid,user_id)对到openids表中。

模板可以显示任何漂亮的占位符(比如OP,或者其他什么),它通常会为用户名为空白的用户显示用户名。

希望您已经不允许使用空白密码登录,因此不存在安全问题。

票数 2
EN

Stack Overflow用户

发布于 2009-10-18 10:36:19

那这个呢?

  • display_name表中添加一个users列,该表不必是唯一的。
  • 使usernamepasswordusers中可选
  • 当有人向OpenID注册时,用空用户名/密码在users中创建一行,并显示设置为"unkonwn (provider)“的名称。
  • 如果用户想要切换到基于密码的登录,允许用户设置用户名/密码.
  • 允许用户管理他们的OpenID,以便现有用户可以切换到基于OpenID的登录。

这意味着用户可以拥有用户名/密码,但他们不必这么做。他们也可以有一个或多个OpenID,但他们不必这么做。它们可以使用非唯一的显示名称。

票数 1
EN

Stack Overflow用户

发布于 2009-11-05 07:09:54

选项1:只允许一种登录类型

下面是我的建议(更新以避免编辑与username相关的所有业务逻辑):

  1. 创建一个名为loginid的新列,以允许存储OpenID和旧用户名,并在该列中添加UNIQUE INDEX
  2. 用来自loginid的现有数据填充username
  3. DELETE INDEXusername允许他们是非唯一的。当从OpenID创建新用户时,请将username值设置为未知(Google),如所述。
  4. 对于遗留登录保留password,对于OpenID则忽略它。
  5. 只更新代码的AUTH部分,以查找loginid,而不是用户名。

选项2:允许多个登录(也很容易扩展到从不同来源链接多个配置文件)

  1. 创建一个新表作为主用户表,并包含每个用户所需的所有字段(可能是上面示例中的email )。
  2. 创建一个存储身份验证的表,其中包括:userid (FK to master record)、username (存储与登录方案相适应的用户名)、password

这两种选择显然都有缺陷,但希望它能让你朝着正确的方向前进。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1584552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档