2009-04-15 3 views
6

CakePHP 기반 웹 사이트에서 특정 작업에만 SSL을 사용하려고합니다. requireSecure()를 사용하여 해당 작업을 수행하고 해당 blackHoleCallback()에서 https://url으로 리디렉션합니다.CakePHP의 특정 작업에 대해 SSL을 선택적으로 활성화

SSL로드가 필요한 작업으로 사용자가 완료되면 서버로드를 줄이기 위해 http://whatever_url으로 다시 리디렉션하고 싶습니다.

어떻게하면됩니까?

답변

6

그래서 내가 한 가지 해결책입니다. 나는 AppControllerbeforeFilter()에 다음 코드를 추가합니다

function _unforceSSL() { 
    $this->redirect('http://' . $_SERVER['SERVER_NAME'] . $this->here); 
} 
3

하면 보안 페이지에 대한 보안 연결을 필요로하는 쿠키 및 일반 쿠키를 사용할 수 있는지 확인하십시오 :

if (!in_array($this->action, $this->Security->requireSecure) and env('HTTPS')) 
    $this->_unforceSSL(); 

기능은 다음과 같이 정의된다 비보안 페이지의 경우. 이렇게하면 누군가가 비보안 쿠키를 캡처하면 중요한 정보를 빼낼 수 없게됩니다.

2

리디렉션 접근 방식이 마음에 들지 않는 이유는 사용자가 여전히 안전하지 않은 URL로 이동한다는 것입니다. 이후에는 리디렉션됩니다. 나는 당신이 SSL/SSL이 아닌 링크를 통과 무엇에 따라, HTML> 링크/URL 수준에서 할 일이 반환됩니다 원했던

과 비슷한 : 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를 만들었습니다. ph :

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)); 
    } 
} 
관련 문제