我有一个复杂的报告应用程序,允许客户登录并查看他们客户数据的报告。应用程序的几个部分使用各种控制器进行数据库调用。我需要确保客户端 A 不会通过标头操作获取客户端 B 的信息。
系统进行身份验证,并为他们分配一个 clientID 和 roleID。如果您的 roleID >1,则表示您为托管数据的公司工作,您可以查看所有客户信息。我想创建一个基本上像这样工作的包罗万象:
if($roleID > 1) {
...send query to database
}else {
if(...does this query select a record with clientID other than my $auth->clientID){
do not execute query
}else {
execute query
}
}
问题是,我希望对发送到服务器的每个查询都运行它......我怎样才能将此代码作为应用程序和数据库之间的“路障”?我已经使用 Zend_Profiler 来查看查询,所以我知道这是可能的,但无法从 Profiler 代码中辨别出来......
我总是可以编写一个身份验证函数并以这种方式传递选定的查询,但是这种包罗万象的方法会更容易在所有调用中实现,并且会成为未来的证明。任何帮助表示赞赏。