我正在尝试为基于CakePHP的网站上的某些操作启用SSL。我正在使用requireSecure()并在相应的blackHoleCallback()中重定向到https://url。
为了减少服务器负载,我想在用户完成需要SSL的操作后重定向回http://whatever_url。
我该怎么做?
答案 0 :(得分:6)
所以这是我遇到的一个解决方案。我将以下代码段添加到beforeFilter()
中的AppController
:
if (!in_array($this->action, $this->Security->requireSecure) and env('HTTPS'))
$this->_unforceSSL();
该功能定义为:
function _unforceSSL() {
$this->redirect('http://' . $_SERVER['SERVER_NAME'] . $this->here);
}
答案 1 :(得分:3)
确保使用需要安全页面安全连接的cookie,以及非安全页面的常规cookie。这样,如果有人捕获了非安全cookie,他们将无法劫持任何敏感信息。
答案 2 :(得分:2)
我不喜欢重定向的方法是用户仍然转到不安全的网址,只有在此之后他才被重定向。
我想在html-> link / url级别完成某些操作,具体取决于您传递的ssl / non-ssl链接,返回类似于: http://cakephp.1045679.n5.nabble.com/Re-Login-through-HTTPS-on-CakePHP-td1257438.html 但也使用安全组件
稍后编辑,我做了一些比较简单的工作,我尝试创建一个简单的示例(不要忘记在config / core.php或bootstrap.php中定义MYAPP_SECURE_URL) : 在app中我创建了app_helper.php:
class AppHelper extends Helper {
function url($url = null, $full = false) {
if($url['action'] == 'login' && $url['controller'] == 'users') {
return MYAPP_SECURE_URL.'/users/login';
}
return h(Router::url($url, $full));
}
}