にcURLを持つソリューションを防ぐことができ、コントローラは、彼らの行動で動作することに注意する必要があります。 ウェブコントローラで
CSRFの検証を無効にする必要があります。
public function beforeAction() {
if ($this->action->id == 'export') {
Yii::$app->controller->enableCsrfValidation = false;
}
return true;
}
コンソールコントローラでのcURLコマンドは、例えば見ることができます
$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_REFERER => $url,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_COOKIESESSION => true,
CURLOPT_COOKIEJAR => 'curl-cookie.txt',
CURLOPT_COOKIEFILE => '/var/www/yii/frontend/web/tmp',
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 10,
CURLOPT_USERAGENT => "Dark Secret Ninja/1.0",
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => "LoginForm[username]=".$username.
"&LoginForm[password]=".$password.
"&LoginForm[rememberMe]=1",
CURLOPT_SSL_VERIFYPEER => false,
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); //get status code
if ($httpCode != 200){
echo "Return code is {$httpCode} \n"
.curl_error($ch);
} else {
echo htmlspecialchars($response);
}
curl_close($ch);
あなたは、単に(他にカールまたはを使用して)HTTPリクエストを作ることができます。あるいは、あなたのコードをコンソールとWebコントローラで使用できるように別の場所に置いてください。 – soju
@sojuこの特定のケースでは、LDAPクレデンシャルによる認証があるため、相対的にcURLを使用するのは困難です。 –
次に、コードロジックを確認してください。 – soju