我已经阅读了其他问题,他们大多谈论这样做的安全性.这并不完全是我的担心,主要是因为该网站的问题是基于浏览器的游戏.但是,更大的问题是用户 - 并非每个用户都有足够的文字来理解OpenID.当然RPX使这很容易,这就是我将要使用的,但是如果用户没有Google或Facebook上的帐户或者不信任系统使用现有帐户登录该怎么办?他们必须在另一个提供帐户 - 我相信大多数人会知道如何去做,更不用说为此而烦恼了.
还有如何在应用程序中管理它的问题.用户可能希望在单个帐户中使用多个身份,因此不像处理用户名+密码那么简单.如何在数据库中存储用户的OpenID标识?使用OpenID也给了我一个好处:RPX可以提供广泛的配置文件信息,因此我可以预填充配置文件表单并要求用户根据需要进行编辑.
我目前有这个:
Users:
------
ID Email Etc.
-- --------------- ----
0 bob@yahoo.com ...
1 alice@yahoo.com ...
UserOpenIDs:
------------
ID UserID OpenID
-- ------ ------
0 0 0
1 0 2
2 1 1
OpenIDs:
--------
ID Provider Identifier
-- -------- ----------------
0 Yahoo https:\\me.yahoo.com\bob#d36bd
1 Yahoo https:\\me.yahoo.com\alice#c19fd
2 Yahoo https:\\me.yahoo.com\bigbobby#x75af
Run Code Online (Sandbox Code Playgroud)
使用这些外键:
UserOpenIDs.UserID -> Users.ID
UserOpenIDs.OpenID -> OpenIDs.ID
Run Code Online (Sandbox Code Playgroud)
这是在数据库中存储OpenID标识符的正确方法吗?我如何匹配RPX给我的标识符以及数据库中的标识符以登录用户(如果标识符已知).
所以这里有具体的问题:
使其易于访问
首先,对于没有 OpenID 的用户,您可以制作一个小页面来解释如何创建帐户(甚至指向某些提供商)。这样,创建 OpenID 帐户并不比普通帐户更难。
对于不想使用 OpenID 的人,您有两种选择。第一种:在 OpenID 登录旁边实现旧式登录,并让用户选择他们想要的方法。第二种是仅拥有 OpenID...这可以简化您的工作。在我看来,有些用户更信任网站而不是受信任的 OpenID 提供商来登录,这很奇怪,因为 OpenID 提供商经常使用加密连接等......
存储在数据库中
johnny g提出的模式正是您所需要的。(我只是不知道你为什么用反斜杠而不是斜杠存储 URL)
您可能需要在使用 URL 之前对其进行规范化,这样就可以避免http://openid.test.com/abc和http://openid.test.com/abc/等内容被作为不同的 URL 处理。
需要采取的额外措施
没有任何。您应该只使用http://openid.net/developers/libraries中的库。
用户身份的确认是提供商的问题。只有用户和网站知道帐户的密码。
如果某人拥有您的 OpenID URL (公开的),他仍然需要密码(或另一种身份验证方法,例如 SSL 证书)才能登录。
| 归档时间: |
|
| 查看次数: |
493 次 |
| 最近记录: |