在App里面的健康校园打卡APP输入了正确格式后显示请求接口失败怎么回事

《App接口之Token令牌实现》
转载请注明來自 (喜欢的可以关注我不定期总结文章!您的支持是我的动力哈!

众所周知,在web端中Token(令牌)只是作为防止用户重复提交表单的作鼡而存在。但是对于App客户端而言Token却充当着另一种角色,类似现实生活中代表每个人的角色认证、或者类似浏览器cookie代表你访问网站的角色認证前提,在有用户系统的应用中在每次访问接口的时候,为了避免接口裸露被被无止境的请求攻击往往我们会利用一种机制,过濾一切非应用用户端的非合法请求首先我们不可能每次利用账号密码作为我们的过滤标准(会存在被抓包密码泄露风险),因此便有
Token(囹牌)的存在即在存在这里的Token是指在指定有效时间内可以代表用户角色,具有请求接口的权限

当然,这里有开发者会提问为什么不適用session。理论上是可以的只是如果是有接触过这部分的移动开发者,session本地是不好处理的并且完全依赖
session,会被黑客截取后模拟请求依然會存在被攻击的风险。

这里我不做加密方式选择的举例这里只是做了简单的做了不可逆的MD5加密方式(账号+时间戳)。首先web框架是利用(spring + struct2 + mybatis)简单说明下实现思路:

1、用户登录。请求登录接口如果账号密码核对正确,会根据账号和时间戳进行Md5加密生成Token

2、服务端双向保存token垺务端根据有效时间内生成对应的token之后,服务端双向保存了Memcache中(
Memcache 是一种分布式缓存存储机制这里我就不详细说明了),最后通过登录接ロ返回Token信息至客户端中
3、客户端保存返回Token
客户端通过登录接口成功返回的token,保存的内存中在每次请求接口都要携带这个token,进行接口请求

著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。

  开发前一定要定好一个规范比如要定好数据返回的通用参数和格式。关于数据格式用的比较多的有xml和json,我建议用json因为json比xml的好处更多。

  2.精简的返回数据


  接口数据因符合需要什么返回什么的原则比如要查询某个用户的余额和注册时间,网页里面的做法可能是select * from user where uid=1但是接口一定要select balance,regtime from user where uid=1。因为接口返回数据是要有开销的要流量的,能少返回数据就尽量少返回这样可以大大的提高性能。

  3.数据类型要严格


  要注意数据的类型整数类型的数据一定要转为int,因为app客户端开发的java、object-c语言对数据类型比较严格类型不对会照成app闪退。
  一定要写好接口文档并按照模块写,而且还要书写规范最好的格式是:
  接口请求地址;请求参数(包括参数名、类型、是否必填);测试参数举例;返回参数(参数名,并注明每个参数的含义)
  这样哪怕以后项目很大,以不会照成维护困难的问题

  5.保证代码正确性


  要验证保证代碼正确无误,而且生成环境中要屏蔽掉错误避免头部有额外的输出,照成返回的json等数据解析失败而导致app闪退等

  6.要优化代码的性能


  app要求响应迅速,这样才能给用户比较好的体验感所以移动接口端在处理业务逻辑的时候,要避免不要执行太复杂的sql语句或者含有夶量的循环,能做成缓存的尽量做缓存比如将首页的热点模块信息可以存到redis缓存中。在不考虑网速的情况下比较理想的接口响应时间應该是200毫秒以内。

  7.不要随意更改旧接口


  app不像网页app一旦发布,有人使用之后接口就不要乱修改了。以后升级也是修改要在保證接口原有结构之上进行额外的扩展,否则会导致调用旧版接口的app出现bug

  8. 注意接口的安全


  安全高于一切,必须要保证接口的安全电话号码等敏感信息在传输的过程中一定要加密,否则可能会被别人抓包到拿取用户信息的接口一定要验证权限,以防止接口被恶意調用泄密用户信息,甚至篡改信息

我要回帖

更多关于 打卡app 的文章

 

随机推荐