【问题标题】:User database using Steam OpenID使用 Steam OpenID 的用户数据库
【发布时间】:2012-01-11 21:14:38
【问题描述】:

我正在尝试使用 steam openid 创建一个用户管理系统,但我不确定表格应该是什么样子。我习惯于使用包含常用用户名、用户名和密码的基本用户表。然后使用 cookie 确认用户是否已登录。不过,我不完全确定如何使用 steamopenID 执行此操作。

我已经完成了登录和验证,但还没有确定有一个可用的数据库。成功登录后,它会返回用户 SteamID。我可以用它做什么来创建一个安全的用户系统?

我正在考虑将用户重定向到一个新页面,如果 steamid 本身不存在,他们可以在其中注册用户名,但我如何验证用户是否登录我们不只使用 steamid?

【问题讨论】:

  • Openid 允许请求用户数据,例如用户名和电子邮件。可能会对它首先感到满意:openid.net/add-openid
  • Steam OpenID 并不是真正的 openid,他们说是,但它返回的几乎都是用户的 steamid。
  • 在您的用户个人资料表中创建一个包含 steamid 的条目。具有 steamid 的用户可以通过 steam 登录。请参阅我的回答,其中包含一些 shema。

标签: php mysql openid


【解决方案1】:

本质上,它就像任何其他登录系统。

你只是不负责登录的东西。但是,是的,正如你所说。验证 ID 后,检查 ID 是否存在于您自己的用户数据库中,如果不存在,请使用该 ID 并将其重定向到“创建个人资料”登录。

【讨论】:

  • 但是如何验证用户是否登录?如果我将用户 ID 存储在 cookie 中,那么您可以轻松欺骗它并以其他用户身份登录。
  • 您应该使用会话来保持用户登录,就像任何其他会员网站一样。
【解决方案2】:

您有两个身份验证提供程序,一个来自您自己的站点,或者一个来自 Steam。对于您接受 openid 身份验证的帐户,您需要将他们的 openid 身份验证存储在它们旁边,因此当有人通过 openid 提供程序登录您的网站时,您会发现这是您网站的哪个实际用户。

您的会话始终连接到您网站的用户 ID:

    [login] 
       |
[authentication]
       |
       \-----+--> [openid auth] ---> [steam id] --\
             |                                    |
             \--> [site user auth] ------> [site user id]
                                                  |
                                              [session]

【讨论】:

  • 为了验证用户是否登录,我检查用户会话中是否存在 Steam id?
  • 不,会话知道它代表哪个用户,因此要验证用户是否登录,您需要查看会话并从中获取用户。然后,您可以在数据库中查找 steamid 是否与用户相关联。
猜你喜欢
  • 2011-11-29
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-12
  • 2015-07-04
  • 2018-07-25
  • 2017-05-08
相关资源
最近更新 更多