Zend_Db_Select
을 사용하여 어떻게 행 수준 보안을 수행 할 수 있습니까? 몇 가지 옵션을 생각해 볼 수는 있지만 실제로 패턴에 맞지 않는 것 같습니다.Zend_Db_Select 행 수준 보안
내가 users
, content
및 많은 다양한 ACL 레벨을 가지고 있다고 가정 해 봅니다. 여기에 나는 하나의 솔루션으로 생각 한 것 :
$select = $db->select()
->from('content')
->where('content_type NOT IN (?)',
Model_Content::userAllowedContentTypes()
)
->order('date DESC')
);
그러나 문제는, 어떤 보안 다양한 유형의 다른 필드를 추가하기로 결정한다면? 그래서 나는 아마도 이런 식으로 생각했습니다 :
/**
* @var Zend_Db_Select
*/
$where = Model_Content::getWhere();
$db->select()
->from('content')
->$where()
->order('date DESC');
더 좋았지 만 그다지 좋지 않다고 생각합니다. 내가 원하는 것은 더이 같은 것입니다 :
$db->select()
->from(array('c' => 'content'))
->getPlugin(new Model_Content_Security('c'))
->order('date DESC');
하지만 확장하거나 이미있을 수 있습니다 뭔가를 얻을 수있는 라이브러리를 수정에 너무 가까워 것 같은 그런 것 같다,하지만 난 아니에요 꽤 그것을보고.
다른 누구에게도 이런 종류의 필요성이 있었습니까? 어떻게 해결 했습니까?
행 수준의 보안을 통해 CRUD 연산에 대한 보안을 이해했으며 Zend_Db_Table_Row_Abstract 및 Zend_Db_Table_Abstract를 확장하여이 작업을 수행 할 수 있습니다. 그러나 당신이 이것을 필요로하는지 확신 할 수 없을 것입니다. 아마 ACL 주장을 들여다 아마도 당신을 도울 수 있습니다. –