HAP框架之Token验证

闲来无事,总结这几天遇到的一个问题,以及解决过程。

这几天在做一个考核项目,拿到需求以后,那就敲代码啊。敲完一个修改功能的时候,测试的时候,突然跳出来这样一个提示框。

请求参数中Token不存在, what,什么鬼。

没办法,有问题那就去解决呗。

首先我就查看我自己的代码有没有写错,于是各种debugger;各种设断点调试。

好吧,数据正常传到后台去了。说明我的代码是没问题的。

那怎么办,遇到问题那就百度一下呗。

搜了一下,百度上没有我想的问题结果。

我就不信了,百度找不到。那我就试试科学上网呗。

不好意思,还是没有。

懵bi中

。。。

好吧,郁闷完了,问题还是得解决。

于是,我就想,这是不是框架中自定义的东西呢。

好吧,查一下官方文档。

尼玛,还真是。尴尬。。。

官方文档是这样说的。

原来这个东西是3.5版本以后,为了防止数据篡改,在进行update数据时,会去校验token。

并且提供了一个解决办法,那就是在配置文件中配置sys.security.token.validate=false 即可。

但是这就等于把token验证给关掉了。但官方文档下面又说了不建议关闭该功能。。。毕竟数据安全性还是很重要的。

于是心里十万个草泥马在奔腾。

又说不建议关闭该功能,但只给关闭该功能的解决办法。又没有说遇到此类问题怎么解决。。。

难道就此放弃,那是不存在的。

于是,我就去找这个token到底是何方神圣。我打开浏览器的调试模式,发现从数据可每次查询一条数据,这条数据都会带上这个token,在浏览器调试模式下参数为_token。

那么我就想,既然提示框说的是请求参数中Token不存在,那我就将这个参数获得以后回传到后台去后台验证试试。

于是,问题又来了,怎样去获取这个值呢。

既然每条数据都会带有_token,那就从选中行的数据入手呗。

function getToken() {
        var choosegrid = $("#grid").data("kendoGrid");
        var selection = choosegrid.selectedDataItems();
        for (var i = 0; i < selection.length; i++) {
            return selection[i]._token;
        }
    }

于是就写了一个方法去获取它,运气真好,还真被我拿到了。既然拿到了,就传到后台参与验证呗。

var data = viewModel.model.toJSON();
data._token = token;

先把token加到model里面去,再通过ajax把整个data传到后台。

tenant.set_token(dto.get(i).get_token());

到这里就应该结束,那就再运行试试呗。

好吧,就是这样做,问题解决。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值