2

特定のページでSSLを強制する方法を理解していますが、https接続なしで他のページをリダイレクトするにはどうすればよいですか?

その理由は、外部のJavaScriptと画像を他のページで実行していて、それらを安全にする必要はないが、httpsを使用して安全な支払いページからリダイレクトされ、赤い十字が付いた南京錠が作成されるためです。

ありがとう

4

1 に答える 1

3

Cake Bookには、SSLを強制する方法の例があります。

public function forceSSL() {
    $this->redirect('https://' . env('SERVER_NAME') . $this->here);
}

このforceSSL()関数は、httpsなしでページにアクセスした場合に呼び出されるSecurityComponentのコールバックで使用されます。

逆にそのようなコールバックはありませんがSecurityComponent::requireSecure、関数を使用して設定されている場合、httpsのみであるすべてのアクションの配列ですrequireSecure()

したがって、AppControllerで次のようなことを行うことができます。

public function beforeFilter(){
    // Check if current action is secure but shouldn't be
    if( 
        $this->request->is('ssl')
        &&
        !in_array($this->request->params['action'], $this->Security->requireSecure) 
    ){
        // Redirect to the http URL
        $this->redirect('http://' . env('SERVER_NAME') . $this->here);
    }
}
于 2012-07-09T11:42:41.890 に答える