我想使用CakePHP的SecurityComponent
来强制使用requireSecure()
通过SSL进行应用请求。
我的问题是默认情况下这是黑名单方法 - 默认情况下允许不安全访问,除非在该控制器中明确禁止。我想切换到白名单方法 - 默认拒绝不安全访问,除非我在该控制器中明确允许它。
此功能是否内置于SecurityComponent中?如果没有,我该如何手动设置?
答案 0 :(得分:0)
默认情况下,它似乎没有内置。您可以通过创建控制器的$requireSecure
属性,然后在requireSecure()
中有条件地调用AppController::beforeFilter()
来模拟此情况。以下是如何实现它:
AppController.php:
public $requireSecure = true;
public function beforeFilter() {
if ($this->requireSecure) {
$blacklist = is_array($this->requireSecure) ? $this->requireSecure : array('*');
$this->Security->requireSecure($blacklist);
}
}
白名单控制器:
public $requireSecure = false;
控制器因方法而异(请注意$requireSecure
是黑名单):
public $requireSecure = array('login');
这实现了默认情况下要求SSL的目标,但如果需要,可以在Controller中明确覆盖此要求。