0

こんにちは、code igniter を使用してログインしようとすると、このエラーが発生します

The action you have requested is not allowed.

これはcsrfの私の設定です:

$config['csrf_protection'] = TRUE;    
$config['csrf_token_name'] = 'csrf_token_name';    
$config['csrf_cookie_name'] = 'csrf_cookie_name';   
$config['csrf_expire'] = 7200;

それは、FusionCMS と呼ばれる World of Warcraft エミュレーション用のカスタム CMS であり、MySQL データベースに接続された php を使用しています。

4

2 に答える 2

1

送信する各フォームはform_open('form_action_url')、CodeIgniterがCSRFフィールドを自動的に挿入するために、フォームヘルパーから使用する必要があります。を介してではなく、この方法でフォームを開いていることを確認してください<form method="POST" action="form_action_url">

于 2012-10-11T19:10:27.657 に答える
0

このスレッドに従って、 2 つのオプションがあります。

Form Helperform_open()の一部として使用します。この関数は、自動的に csrf トークンを非表示に生成します。<input>

または、手動の csrf トークンと組み合わせたバニラ HTML:

<form method='post' action='somecontroller'>
    <input type="hidden" name="<?= $this->security->get_csrf_token_name()?>" value="<?= $this->security->get_csrf_hash()?>" >
    <input .../>
</form>

get_csrf_hash()が存在しないというエラーが表示された場合は、古いバージョンの CI を使用している可能性があり、代わりにこれを使用できます。

<input type="hidden" name="<?= $this->security->csrf_token_name?>" value="<?= $this->security->csrf_hash?>" />
于 2012-10-12T05:43:37.050 に答える