第一步
服务器先生成一个token值
public function handle($input, $biz)
{
$request = \think\facade\Request::instance();
return ['data' => $request->token()];
}
第二步
前端获取到此token值,通过表单请求
<input type="hidden" name="__token__" value="{$token}" />
第三步
表单验证
public function handle($input, $biz)
{
//输入验证
$validate = new TradeValidate();
if (!$validate->scene('settle')->check($input)) {
throw new ValidateException($validate->getError());
}
}
<?php
namespace validate\shop;
use think\facade\Cache;
use think\Validate;
/**
* 校验
*/
class TradeValidate extends Validate
{
//规则
protected $rule = [
'__token__' => 'require|token'
];
//信息
protected $message = [
'__token__.require' => 'token为必填项',
];
//场景
protected $scene = [
'settle' => ['__token__'],
];
}
如果遇到提示“令牌无效”的情况,就表示在第一步生成的token值没有在项目中共用到,则修改session的配置,项目config目录下找到session.php文件
原来那个id值是空的,给他添加一个值 “PHPSESSIDSRS”,或者自己整个其他的值都行