php - 将 Open ID 与我当前的登录系统合并?

标签 php mysql database-design openid

我目前正在我的网站上设置 Open ID 身份验证,但我在将它与我当前的登录系统和数据库合并时遇到了问题...我已阅读 Plaxo 上的文章& 它推荐这种类型的表来存储 openid 信息...

create table user_openids (
  openid_url varchar(255) not null,
  primary key (openid_url),

  user_id int not null,
  index (user_id)
);

这是我当前的用户信息表

Userid(PRIMARY) | username(UNIQUE) | password | Email

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

我想要一个类似于 Stack overflow 使用的系统,只需使用您的 Open ID 登录,它会为您提供一个未知的(OPENID-provider)显示名称....同时保持我当前的登录系统完好无损。
1)如何在不影响当前登录设置的情况下将用户的 Open ID 详细信息添加到我当前的用户信息表中?
2) 目前我使用 User-id(为每个用户生成唯一的)存储在 session 中以维护登录。 Open ID现在怎么办?

*我的想法(不知道对不对)
- 添加一个open-id字段,用于存储open id提供者为每个用户提供的唯一open id url,对于非open-id用户设置为null。
- 将 User-id 设为文本字段并存储打开的 id url 的 md5。(将其存储在 session 中以维护登录)。
- 我不知道如何处理设置为每个用户唯一的显示名称/用户名,因为我想显示 unknown(OPENID_provider)(对于使用 open-id 的用户),它可以是从配置文件设置更改...

任何建议都会有所帮助....谢谢

最佳答案

您展示的表格布局的想法是让 1:many 来自 users:openids。

因此,无需更改用户表。

当有人使用 OpenID 登录时,您检查该 OpenID 是否在 openids 表中。如果是这样,您就有了用户的 user_id,您就完成了。

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

您的模板可以在通常为用户名为空的用户显示用户名的地方显示任何漂亮的占位符(例如他们的 OP 等)。

希望您已经禁止使用空白密码登录,这样就不会有安全问题。

关于php - 将 Open ID 与我当前的登录系统合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1584552/

相关文章:

php - DataTables,将数据表导出到 CSV 文件,其中列值带有逗号

php - 蛋糕PHP 3 : how to get all associations of a table?

Mysql 每月分区 - 错误代码 : 1503 A PRIMARY KEY must include all columns in the table's partitioning function

sql-server - 为什么 varchar(n) 中的 n 指定为具体数字?

mysql - mySQL中的外键和NULL

database-design - 如何设计带有需要引用自身的表的数据库?

php - PDO 连接被 laravel 拒绝,但不被 $con = new PDO() 拒绝

php - 使用 Ajax 分页时数据垂直显示

php - 在mysql中选择大量插入

PHP:使用字符串参数时 SQL 语句中的问题