有选择地为CakePHP中的某些操作启用SSL

时间:2009-04-15 11:44:39

标签: cakephp ssl https

我正在尝试为基于CakePHP的网站上的某些操作启用SSL。我正在使用requireSecure()并在相应的blackHoleCallback()中重定向到https://url

为了减少服务器负载,我想在用户完成需要SSL的操作后重定向回http://whatever_url

我该怎么做?

3 个答案:

答案 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));
    }
}