Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter和x2B的授权;CSRF&x2B;乌洛金误差_Codeigniter_Authorization_Csrf - Fatal编程技术网

Codeigniter和x2B的授权;CSRF&x2B;乌洛金误差

Codeigniter和x2B的授权;CSRF&x2B;乌洛金误差,codeigniter,authorization,csrf,Codeigniter,Authorization,Csrf,为Codeigniter设置授权模块uLogin 但是,如果启用了CSRF保护,则会导致错误(“不允许您请求的操作。”) 如果关闭保护,一切正常 如果启用了保护,则在记录和自动刷新后,当前页面将失败 显然是由于代币的差异。如何解决此问题?我不熟悉链接的“模块”,但您需要在登录表单中添加一个隐藏字段,其中包含CSRF验证数据,如下所示: <input type="hidden" name="<?=$this->security->get_csrf_token_na

为Codeigniter设置授权模块uLogin

但是,如果启用了CSRF保护,则会导致错误(
“不允许您请求的操作。”

如果关闭保护,一切正常

如果启用了保护,则在记录和自动刷新后,当前页面将失败


显然是由于代币的差异。如何解决此问题?

我不熟悉链接的“模块”,但您需要在登录表单中添加一个隐藏字段,其中包含CSRF验证数据,如下所示:

<input type="hidden"
    name="<?=$this->security->get_csrf_token_name();?>"
    value="<?=$this->security->get_csrf_hash();?>"
/>

CodeIgniter CSRF的设置可能会导致您的问题。在/config/config.php中,设置
$config['csrf\u expire']
确定csrf cookie的有效期。例如,如果该设置为300(5分钟),并且您刷新了登录页面,但在10分钟内没有尝试登录,您将收到错误
“您请求的操作不允许。”
,因为CSRF cookie在5分钟前过期

从本质上讲,该错误很可能来自已过期的CodeIgniter CSRF cookie。该cookie是在加载页面时设置的,因此如果带有表单的页面在那里的时间超过
$config['csrf\u expire']
设置,则必须在提交表单之前刷新页面,否则将收到该错误。为了避免经常出现错误,请尝试增大
$config['csrf\u expire']
的大小


此外,如果您使用CodeIgniter,隐藏的CSRF输入将自动生成。

谢谢。所有设置都正确。问题不在设置中。问题完全是上面解释的。谢谢。自动添加隐藏字段形式的CSRF保护时。问题不是缺少字段,服务器返回的身份验证令牌无效。什么身份验证令牌?