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

我目前正在我的网站上设置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(为每个用户生成唯一的)来存储在会话中以维护登录.如果是Open ID,我现在该怎么办?

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

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

解决方法:

您展示的表格布局的想法是拥有1:来自用户的许多:openids.

因此,不需要对用户表进行任何更改.

当有人使用OpenID登录时,您检查该OpenID是否在openids表中.如果是这样,您拥有用户的user_id并且您已完成.

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

您的模板可以显示任何好的占位符(例如他们的OP或其他),它通常显示用户名为空的用户用户名.

希望您已经禁止使用空白密码登录,因此应该没有安全问题.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...