我对授权过程感到非常困惑。我正在开发一个网络应用程序,我们在那里有人们一起工作的小组 - 因此,该小组内的所有人都可以获得这些信息。我们还有一个“关注”群组的功能(我听到了推特吗?),以便群组的关注者也可以访问,但只能阅读群组的数据(在我的情况下,一些'帖子',是的类似fb的帖子)。问题在于以 良好的 方式授权人员。实际上,由于我直接将授权工作提供给我使用的sql查询 - 通过限制WHERE子句中的记录,因此我的工作进展顺利。但由于某种原因,我发现这种方式很糟糕 - 非常糟糕。只有我能在代码中添加授权工作,才会感觉更好。但也许这种方法很好,我不知道!如果是这样,那么告诉我,或告诉我一个更好的方法来做到这一点。是的,我正在创建一个RESTful API,如果这可能有助于理解我的问题。 在最后一点上,我只是一个初学者 - 中间人,所以如果你觉得问题描述得不好,请耐心等待。 还有一件事,它不是facebook或twitter的副本,也不是两者的混合。 谢谢!
确定。也许我应该包含数据访问层的代码示例。这应该让我更容易理解我的问题。这是返回具有给定id的“项目”的代码。项目成员(在project_members表中列出)或跟随它的人(在project_followers表中列出)可以访问项目。
public function getProjectById($id) {
$auth = new Auth();
$userid = $auth->getCurrentUserId();
$sql = "SELECT P.id, P.userId, P.name, P.description, P.creationTime, P.startTime, P.endTime, P.isOpen FROM projects P INNER JOIN project_members PM ON PM.projectid = P.id AND (P.id = '{id}') AND (PM.userId = '{userid}' OR P.isOpen = 1)";
return $this->result($sql, array( "userid" => $userid, "id" => $id ));
}
现在,由于一些不明原因,我发现查询很脏。也许它可能很干净,但以这种方式处理授权是好的。或者还有其他更好的方法吗?