我想强制某些控制器的SSL,并删除SSL的一切。我在一个自定义的控制器类的_init()有一个片段,前一段时间,我曾希望它不工作:为某些控制器强制使用SSL的最佳方法?
$ssl = $this->request->is('ssl');
$forceSecured = in_array($this->request->controller, array('Orders', 'Customers'));
//remove SSL for non-ssl pages
if ($ssl && !$forceSecured) {
return $this->redirect(Router::match(
$this->request->params,
$this->request,
array('absolute' => true, 'scheme' => 'http://')
)
);
}
// Force ssl on for ssl pages
if (!$ssl && $forceSecured) {
return $this->redirect(Router::match(
$this->request->params,
$this->request,
array('absolute' => true, 'scheme' => 'https://')
)
);
}
我支持遗留应用程序,所以我有多个硬盘已编码的路线已定义。我确信我可以在Router :: connect中使用一个处理程序,但我宁愿对所有请求进行检查。延续路线是否会成为这里的路?
返回'Response'对象是我陷入困境的地方。另外,我想我没有把它抽象出来。 注意,'$ this-> redirect line'缺少一个右括号。 –
那里,我修好了。 –