CodeIgniter登录错误

时间:2012-10-11 19:04:15

标签: codeigniter

您好,当我尝试使用代码点火器登录时遇到此错误

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;

这是一个定制的CMS,用于魔兽世界仿真,称为FusionCMS,它使用连接到MySQL数据库的php。

2 个答案:

答案 0 :(得分:1)

您提交的每个表单都需要使用表单助手中的form_open('form_action_url'),以便CodeIgniter自动插入CSRF字段。确保以这种方式打开表单,而不是通过<form method="POST" action="form_action_url">

答案 1 :(得分:0)

您有两个选项as per this thread

使用form_open()作为Form Helper的一部分。此函数会自动将csrf标记生成为隐藏的<input>

或者,vanilla HTML与手动csrf令牌结合使用:

<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?>" />