Facebook如何处理数据库方面的隐私设置?

时间:2010-12-10 06:47:16

标签: ruby-on-rails database facebook database-design authorization

设计像facebook这样的隐私系统的设计模式是什么?

用户根据他的朋友组决定要分享哪些信息。所有用户信息(电子邮件,电话)都存储在数据表中,只有key = value table。

当前表:

  • 用户 - (id)
  • UserData - (id,user_id,datatype,value)
  • 友谊 - (user_id,friend_id,friendgroup_id)
  • FriendGroup - (user_id,name)

示例:

  • X组可以看到phone_1
  • Y组可以看到phone_2
  • 所有群组都可以看到phone_3

可以更改此架构。

4 个答案:

答案 0 :(得分:2)

您必须为FriendGroup制作权限表。 因为你必须收集给每个FriendGroup的权限,同时让组或用户可以更改该权限。

Prmissions(permission_id,friend_group,参数,可见)

示例:

  • X组可以看到phone_1
  • Y组可以看到phone_2
  • 所有群组都可以看到phone_3
(1,x,phone_1,true)
(1,Y,phone_2,true)
(1,x,phone_3,true)
(1,Y,phone_3,true)

您可以在以下链接中更多地了解ACL:

Database model with users, roles and rights

A Role-Based Access Control (RBAC) system for PHP

Patterns for building social network type applications?

答案 1 :(得分:2)

我创建了一个名为Privacy的gem,可以帮助将简单的隐私设置集成到Rails应用程序中。看看:https://github.com/xuanchien/privacy_setting

答案 2 :(得分:0)

您需要基于角色的权限管理系统。请查看CanCanDeclarativeAuthorization宝石。

答案 3 :(得分:0)

您可以为所有字段添加列名权限,例如

phone_number和phone_number_permission,photo和photo_permission以及在权限列中使用值0,1,2,3

permission rights
0. Not show to anyone
1. Show to friends
2. Show friends of friends
3. Show to groups and who are your friends

您必须对个人资料页面上的观看数据管理此权限。

如果用户==朋友和权限== 1显示数据