数据库设计 – 在数据库中存储OpenID信息
这是一个数据库问题.我已经安装并运行了一个openid库.
我想在我正在使用的网站上使用OpenID.有三种类型的用户. >使用电子邮件/密码进行身份验证的命名帐户 所有这些用户都存储在同一个表中,只是注释表.已命名的帐户会链接到该帐户可以管理的博客.匿名用户可以对博客上的文章发表评论,但他们无法做任何其他事情.如果匿名用户注册了某个帐户,我想自动将该用户的旧评论转移到指定帐户.我目前正在通过让用户填写具有唯一名称和有效电子邮件的表单来实现此目的. 目前,两组帐户都使用以下架构存储在同一个表中. (是的,它是铁路迁移) create_table :users do |t| t.string :name #unique because it maps to a subdomain t.string :openid_url #unique t.string :email #unique t.string :password_hash t.string :password_salt t.boolean :guest #Anonymous user flag t.timestamps end (openid_url是唯一的,以防止多个帐户被连接到同一个openid.电子邮件是唯一的,因为用户使用电子邮件/密码登录) 我正在使用此设置我遇到了Google的OpenID实施问题.使用Google for OpenID的每个用户都具有相同的网址:https://www.google.com/accounts/o8/ud. 我如何支持使用谷歌作为openid提供商,因为它的网址并不是每个用户都是唯一的? (请记住存在的约束) 注意:Google帐户可以使用互联网上的任何有效电子邮件地址,因此我不能将person@google.com存储在openid_url字段中,因为电子邮件可能是person@example.com或更糟的是person@yahoo.com!雅虎也使用这种单一的网址方法,所以我也必须支持它们. 解决方法存储openid.claimed_id值.每个用户都是独一无二的. Google OpenID确实是独一无二的.它们都以相同的值开头,但它们具有唯一的?id = uniquenesshere querystrings.请记住,这些值应该被视为区分大小写,因此在查找用户时保留大小写并匹配大小写.您绝对不希望因为您提供的原因而认为电子邮件地址是唯一的,而且对于大多数提供商而言,电子邮件地址未经过预先验证(或者您无法信任提供商已完成此操作),因此存储在电子邮件中地址是让用户身份被盗的可靠方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql – 实现一个有效的系统“未读取注释”计数器
- sql-server – 使用T-SQL和XQUERY解析XML – 搜索特定值
- sql – 使用另一个表中的数据创建计算列
- 即使使用白名单IP,也无法连接到Azure SQL数据库
- sql – 如何在DataGrip中设置服务器输出
- 如果在T-SQL中记录为NULL,如何替换字符串
- SqlServer四种排序:ROW_NUMBER()/RANK()/DENSE_RANK()/nti
- sql – 创建索引所需的最小行数是多少?
- sql – DATENAME(MONTH,GETADATE())返回月份的数值为’09’
- SqlServer2005中使用row_number()在一个查询中删除重复记录