CodeIgniter CSRF и локальный хост - PullRequest
1 голос
/ 30 апреля 2011

В настоящее время я работаю локально (myhostname.local), чтобы начать проект разработки в CodeIgniter, и пытаюсь выполнить простую отправку формы входа в систему, а защита CSRF не работает.Я получаю сообщение об ошибке:

Обнаружена ошибка
Запрошенное вами действие не разрешено.

Несколько замечаний:

  1. Я использую CI Reactor 2.0.2
  2. Я запускаю все с локального хоста (myhostname.local)

Моя форма:

<?=form_open('home/login');?>
... username/password fields in here ...
<?=form_close();>

Мой контроллер:

public function login()
{

    $this->form_validation->set_rules('email','Email','trim|required');
    $this->form_validation->set_rules('password','Password','required');

    if($this->form_validation->run() === FALSE)
    {
        ... form did not pass validation ...
    }
    else
    {
        ... form passed ...
    }

}

Когда я отправляю форму на http://myhostname.local/home/login, я получаю вышеуказанную ошибку.

Любая помощь по поводу того, почему это происходит, очень ценится.

Спасибо!Шон

Ответы [ 3 ]

9 голосов
/ 01 мая 2011

Похоже, что установка значений в файле config.php для файлов cookie имеет большое влияние.Как только я вернул их к значениям по умолчанию, все снова начало работать правильно:

$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']    = "/";
$config['cookie_secure']    = FALSE;
3 голосов
/ 21 марта 2012

Я столкнулся с подобной проблемой; Я продолжаю получать "Запрошенное вами действие не разрешено". сообщение об ошибке при попытке отправить форму для входа. Я работаю локально с виртуальной коробкой Linux. Оказалось, что моя проблема была связана с настройкой даты и времени на виртуальной машине. Как только я обновляю дату, чтобы она соответствовала дате и времени на моих хостах, проблема исчезает.

Я использую CondeIgniter v. 2.1.0.

Вот части моего файла config.php:

$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']      = "/";
$config['cookie_secure']    = FALSE;

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

Надеюсь, эта информация поможет кому-то столкнуться с подобной проблемой.

2 голосов
/ 12 марта 2012

Запуск CI 2.1.0 на локальном хосте с MAMP.

Установка CI совершенно новая, без дополнительных услуг. Просто следуя «Руководству» в Руководстве пользователя, я столкнулся с той же ошибкой после создания моей первой формы и включения CSRF в конфигурациях.

Form_open () используется для открытия формы. Скрытое поле создается. Ошибка появляется каждые раз: «Запрошенное вами действие не разрешено».

После игры с параметрами конфигурации cookie в config.php, как было предложено здесь, я обнаружил, что в моем случае виновником является конфигурация 'cookie_prefix'. Он должен быть пустым, в противном случае он вызывает эту ошибку. Как только он остается пустым, все работает.

Надеюсь, это может оказаться полезным для других.

...