当前位置:   article > 正文

HAP框架之Token验证_hap_token_failed

hap_token_failed

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

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

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

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

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

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

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

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

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

不好意思,还是没有。

懵bi中

。。。

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

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

好吧,查一下官方文档。

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

官方文档是这样说的。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/224525
推荐阅读
相关标签
  

闽ICP备14008679号