【发布时间】:2013-01-02 15:15:10
【问题描述】:
我不喜欢 CSRF 令牌过期时 CI 默认的行为方式。例如,当用户显示登录表单很长时间后,当他们最终提交时,就会出现这个带有错误消息的丑陋空白页面。
我询问了解决这个问题的方法,有人告诉我扩展 Security 类,并重写它的 csrf_show_error() 方法,如下所示:
class MY_Security extends CI_Security {
public function __construct()
{
parent::__construct();
}
public function csrf_show_error()
{
// comment out the default action
// show_error('The action you have requested is not allowed.');
// add redirect actions here
// I'd like to use some helper function here like redirect()
}
}
问题是我不能,或者我不知道如何从这里访问库和帮助程序,以执行重定向。我无法在此处使用 get_instance() 函数,因为出现错误。那么,我还能做什么?或者有没有其他更好的选择来防止显示这个错误页面?
【问题讨论】:
-
如果您无法访问类中的辅助函数来执行重定向,那么您始终可以通过设置
header()重定向和设置正确的 HTTP 状态代码等来执行辅助函数的工作。 -
这很神秘。这是我最后一张牌。但是最好使用已经实现的代码。一个简单的 redirect(current_url()) 会很棒。但我也想避免硬编码在我的自定义类中包含 URL 帮助器。
标签: php codeigniter csrf