最近使用ThinkPHP5开发项目,在提交表单时为了避免一些重复提交及安全防护处理时想到了表单令牌。
查了一下官方的开发手册,发现上面跟本没有任何表单令牌的字眼。后来在git的官方扩展库里找到了一个基础的表单令牌行为扩展,下载下来放到项目里读了一下源码做了基础配置后,可以生成表单令牌了,但在业务处理中没有令牌验证功能。而且也没有详细文档,在使用ajax提交时也是问题多多。
后来自己经过了一翻改造后可以正常使用了,在此分享给大家。废话不多说了,上步骤:
【注意:使用此扩展验证ajax提交的数据时需jquery的支持】
1、将附件中的文件放到自己项目的相应目录中。(注:如果application/tags.php文件有数据,请手动加入如下配置项。)
// 系统行为定义
return [
'module_init' => [
'app\\common\\behavior\\Token'
],
'view_filter' => [
'app\\common\\behavior\\Token'
],
'app_end' => [
'app\\common\\behavior\\Token'
]
];2、在application/config.php中加入如下配置 // +----------------------------------------------------------------------
// | 表单令牌配置
// +----------------------------------------------------------------------
'token' => [
'token_on' => true,
'token_name' => '__hash__',
'token_type' => 'md5',
'token_reset' => true,
]3、在后台数据提交业务中使用如下方法进行令牌验证,checkToken的参数$data为当前提交的表单数据,也可留空。留空时会从post中自动获取 // 使用表单令牌认证
if(false === request()->checkToken($data)){
$this->error = "表单令牌数据验证失败!";
return false;
}OK,大功告成。尽情享用表单令牌的乐趣吧!
thinkphp5 表单令牌行为扩展.zip
( 4.23 KB 下载:586 次 )
