我在最近一次与阿盟合作开展的CakePHP1.3项目主计长中这样做,在CakePHP 2.1中应相当相似。
function beforeFilter() {
// ACL Check
if($this->name != Pages && !$this->Acl->check(array( model => User , foreign_key => $this->Session->read( Auth.User.id )), $this->name . / . $this->params[ action ])) {
CakeLog::write( auth , ACL DENY: . $this->Session->read( Auth.User.name ) . tried to access . $this->name . / . $this->params[ action ] . . );
$this->render( /pages/forbidden );
exit; // Make sure we halt here, otherwise the forbidden message is just shown above the content.
}
}
除页码控制器外,所有控制器/行动都经过了ACL检查,如果用户不能进入,则使用页/暗中的观点代替,记录条目则写给下。 记录也存档(选择,但我当时倾向于这样做)。