thinkphp通过ajax传令牌token到后台验证

发布时间:2021-04-23作者:小灵龙点击:72

问题描述:
      
       在thinkphp中使用ajax从后台返回数据,在token令牌的使用中出错:令牌数据无效。刚开始我用的'unme'=>'require|token'。

解决办法:

html代码:
   <input type="hidden" id="token" value="{$Request.token}" />
   var token = $("#token").val();
   $.ajax({
        type: "post",

        dataType: "json",

        url: "/publesetPass",  

        data: { 'unme': usrName, "newpss": newPass,  "__token__": token },    

        success: function (ret) {

            console.log(ret);      

        },
    });
php代码:

          $rule=[

          'unme'=>'require',
          '__token__' => 'token'
      ];

        $data=[
            'unme'=>$datas['unme']
        ];

        $vali=new Validate($rule);
        $res=$vali->check($data);
        if(!$res){
            $resmsg=$vali->getError();

             return json(['code'=>1001,'data'=>'','msg'=>$resmsg]);
        }

表单令牌的作用在于防止数据的重复提交,防止跨站脚本攻击。原理是生成一个token值,用session缓存起来,这个过程是在打开填写表单的页面时就生成了,然后我们填写完数据是提交到php页面,此时的token值会和之前缓存起来的值进行对比,如果不一样就会报错。
标签: