我对授权过程感到非常困惑。我正在开发一个网络应用程序,我们有小组,人们一起工作——因此小组内的所有人都可以使用这些信息。我们还有一个“关注”群组的功能(我听到推特了吗?),这样群组的关注者也可以访问,但只能阅读群组的数据(在我的情况下,是一些“帖子”,是的类似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 ));
}
现在,由于某种晦涩的原因,我发现查询很脏。也许它可能很干净,但是以这种方式处理授权是否很好。或者有没有其他更好的方法?