当前位置:   article > 正文

easyadmin layui js监听返回结果,进行token验证防止连点

easyadmin layui js监听返回结果,进行token验证防止连点

记录:easyadmin layui js监听返回结果

1.页面增加TOKEN隐藏值

<input type="hidden" name="TOKEN" value="{$row.id}">
  • 1

2.JS监听返回结果,若失败,则赋值页面TOKEN值

define(["jquery", "easy-admin"], function ($, ea) {

    var init = {
        table_elem: '#currentTable',
        table_render_id: 'currentTableRenderId',
        show_url: 'cangku.bcktz/show',
        createCkd_url: 'cangku.bcktz/createCkd',
    };

    var Controller = {
        show: function () {
            ea.listen();
        },
        createCkd:function () {
            // ea.listen();
            ea.listen(function (data) {
                // 提交保存的数据
                return data;
            }, function (res) {
                // 成功
                ea.msg.success(res.msg, function () {
                    ea.api.closeCurrentOpen({
                        refreshTable: 'currentTableRenderId'
                    });
                });
            }, function (res) {
                // 失败 
                ea.msg.error(res.msg, function () {
                    if(res.data && res.data.token){
                        $('input[name=TOKEN]').val(res.data.token);
                    }
                });
            });
        },
    };
    return Controller;
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

3.功能

public function createCkd($id)
{
    if ($this->request->isAjax() && $this->request->isPost()) {
        if(jianYanToken(input('TOKEN')) === false){
            $this->error('token失效,请刷新页面', ['token'=>getToken()]);
        }
        $data = [
            ......
        ];
        $result = $this->logic->createCkd($data);
        if($result['status'] !== 'success'){
            $this->error($result['msg'], ['token'=>getToken()]);
        }
        $this->success('保存成功');
    }
    $this->assign('TOKEN', getToken());
    return $this->fetch();
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

4.common.php 定义token方法

use think\facade\Cache;

// 生成token
function createToken($length=32) {
    $str = '12356789ABCDEFGHIJKLMNOPQRSTUVWXYZ';//34个字符
    $strlen = 34;
    while($length > $strlen){
        $str .= $str;
        $strlen += 34;
    }
    $str = str_shuffle($str);   //随机地打乱字符串中的所有字符
    $token = substr($str,0,$length); //截取字符串
    Cache::tag('pageToken')->set('pageToken_' . session('admin.id'), $token);
    return $token;
}

// 验证token
function jianYanToken($token) {
    if($token != Cache::get('pageToken_' . session('admin.id'))){
        return false;
    }
    createToken();  //重置token
    return true;
}
// 获取token
function getToken() {
    $token = Cache::get('pageToken_' . session('admin.id'));
    if(!$token){
        $token = createToken();  //生成token
    }
    return $token;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/908248
推荐阅读
相关标签
  

闽ICP备14008679号