一个数据库的多个站点和身份验证

时间:2018-05-22 23:40:24

标签: security express nginx arangodb

这可能是一个简单的问题,但这是我第一次以这种方式建立网站,我需要一些建议。

设置:

  • 我有两个网站:WS1& WS2,每个都有不同的域名。 它们都使用nginx服务器块指向相同的IP,而SSL则指向相同的IP 设置每个域名。我将使用Express.js和ArangoDB(我可以 在ArangoDB中添加其他数据库以拆分中的两个站点 必要时后端)

问题:

  • 有时这两个网站将从数据库访问相同的信息,我会 不想复制数据,但它们会有所不同 认证。每个站点都有不同的帐户 每个站点的每个成员的身份验证和页面限制。

问题:

  • 我如何设置它以确保安全性,以便一个帐户 无法访问任何其他网站?我是否需要在每个服务器块中使用两个单独的框架?我应该创建两个数据库吗?最佳推荐?

1 个答案:

答案 0 :(得分:1)

这取决于您的授权框架。

身份验证标识访问您网站的用户,该身份的一部分是用户,公司/域以及他们所属的角色/组。

授权是允许该用户,公司/域或角色/组访问的内容的描述。

您可能知道用户标识的Cookie和用户名/密码。用户存储在数据库中并映射到他们所属的公司/域。并且用户也被映射到他们所属的角色/组。

select userID, company from users where username = ?, $username

select group from groups where userID = ?, $userID

数据库中的某些记录可能范围限定为单个域/公司,其他记录范围限定为角色/组。您将域/公司或角色/组添加为数据库中的列,并在查询中使用它。

select content from companyPages where company = ?

select content from groupPages where group in (select group from groups where userID = ?))

您也可以使用相同的组来自多个公司/域的用户。

把它放在一起:

Select content from pages WHERE group in (select group from groups where userID= ?) AND company = (select company from users where userID=?);

基本上,您必须定义授权方案并将其映射到数据模型。