2019独角兽企业重金招聘Python工程师标准>>>

最近半年主要是进行手机端的开发,主要是H5平台和APP内嵌H5营销活动的支持,相对遇到的兼容性问题比较少些,只是iscroll性能,点透,手机浏览器缓存,手机性能提高。

  今天总结下,工作项目中的app->H5应用服务同步身份的问题,在设计的时候,主要登陆退出功能都在APP实现,H5通过伪协议的方式,呼出APP的界面,登陆成功之后,APP再调用相关暴露的js方法。

登陆过程详解

  A.在客户端登陆,进入H5页面的过程

  1. 客户端APP向客户端服务器发起请求,http://***/user/userLogin
  2. 客户端服务器返回用户登陆数据(json形式),存在token属性,存于APP内存, 记为 登陆token。
  3. 用户点击H5相关广告页面,进入H5页面,url携带 token=加密( 登陆token,手机信息)& tim = 当前客户端的时间
    (http://**/zero/lottery.html?token=加密(登陆token,手机信息)&sys=android&time=1403243032836)加密(登陆token,手机信息),记为 加密token
  4. 页面js根据cookie中的最近有效 加密token 数据时间进行对比
    url中的time< h5_login_token_time, 以h5_login_token进行ajax登陆
    url中的time> h5_login_token_time, 以加密token进行ajax登陆,并更新相应的cookie
    (cookie值描述:“h5_login_token”:最新有效的token;“h5_login_token_time”,相对应的最新有效的时间)
    (http://**/lottery/zero/login?_=1403243629509&sys=android&token=加密token&isCheck=true&_=1403243629509)
  5. h5服务器,接收到加密token,进行解密,获得相关的 登陆token,手机信息,清空当前session信息,通过登陆token调用APP服务器端接口
    POST http://**/user/getUserByToken
    { VERSION : “1.0”, token: 登陆token }
  6. 客户端服务器,通过 登陆token查找对应的登陆数据,返回给h5服务器
  7. h5服务器 获得登陆的账号信息,进行身份信息初始化,记录对应的session,返回给ajax响应

  B.客户端未登陆

  1. 用户点击H5相关广告页面,进入H5页面,url携带 token=加密(token0,手机信息)& tim = 当前客户端的时间
    (http://**/zero/lottery.html?token=加密(token0,手机信息)&sys=android&time=1403243032836)加密(token0,手机信息),记为 加密token0
  2. 页面js根据cookie中的最近有效 加密token0 数据时间进行对比:
    url中的time< h5_login_token_time, 以h5_login_token进行ajax登陆
    url中的time> h5_login_token_time, 以加密token0进行ajax登陆,并更新相应的cookie
    (cookie值描述:“h5_login_token”:最新有效的token;“h5_login_token_time”,相对应的最新有效的时间)
    (http:/****/zero/login?_=1403243629509&sys=android&token=加密token0&isCheck=true&_=1403243629509)
  3. h5服务器,接收到加密token0,进行解密,获得相关的token0,手机信息,token0为退出信息标示,h5服务器清空当前session信息,ajax返回未登陆
  4. h5通过伪协议mo://27,客户端显示登陆界面
    js代码: window.location.href = "mo://27"
  5. 客户端APP向客户端服务器发起请求,http://****/v1/user/userLogin
    客户端服务器返回用户登陆数据(json形式),存在token属性,存于APP内存, 记为 登陆token。
  6. 客户端app通过native代码 调用webview中的登陆js函数,将 加密(登陆token,手机信息)加密token 传入函数,即 ios_page_load(加密token)
  7. js进行处理,此时的加密token即为最新token, 更新 相应的cookie值进行ajax登陆
    (http:/****/zero/login?_=1403243629509&sys=android&token=加密token&isCheck=true&_=1403243629509)
  8. 同A5
  9. 同A6
  10. 同A7

  C.token超时的情况

  客户端服务器,token 与session 相似的机制,存在有效期,30分钟,所以存在客户端登陆了,在H5中没有登陆的情况。即情况A中

  1~5:同A1~5

  6. 服务器端,由于登陆tokenn 错误或者 登陆token超时的情况,没有返回登陆账户信息

  7.h5服务器ajax返回未登陆

  8. 同B相关流程

相关备注

  1.cooike 存储最新 有效token 的设计。

    主要是为了解决 用户点击后退的情况下面,页面URL上还是原来的token,会导致用户退出,现加入时间戳机制,以最新的为准

  2.APP登陆,H5页面显示未登陆,主要是由于app服务器端有效期30分钟导致。

  3.后台相关逻辑,以客户端传入的token为准,存在token并与当前登陆的token不同的时候,则先退出

转载于:https://my.oschina.net/liuhuiweb/blog/617265

app-》h5同步身份相关推荐

  1. Java对接支付宝支付(App+H5)

    App+H5支付方式(比微信简单) 1.登录支付宝开放平台,选择网页和移动应用: 2.填完app相关的信息后,点击App,设置接口加签方式:如下,选择SHA256,然后通过支付宝提供的工具生成公私钥对 ...

  2. Github官方app分析——用户身份验证模块

    这篇文章记述的是我对Giuhub官方app的用户身份验证模块的分析. Giuhub的官方app虽然是一个非常小众的程序,但是从程序的设计的角度看,这是一个非常优秀的项目.对于其用户身份验证模块,给我留 ...

  3. 省钱兄同城跑腿小程序源码uniapp前端模版源码(小程序+APP+H5)

    开源省钱兄同城跑腿源码,目前只开源用户端V2版本部分核心模块源码提供学习研究 使用uniapp技术,提供学习使用不可商业 适配支持公众号+APP+H5+小程序,使用Hbuilder导入即可运行 #功能 ...

  4. uni App+H5 实现人脸识别

    uni App+H5 实现人脸识别 通过h5的视频video管理设备摄像头(不要关),在打开视频摄像时快照截取人脸照片传送到后台通过API接口调用百度人脸识别结果并通过返回数据解析自己业务需求. 1. ...

  5. PHP酒店管理系统源码(多酒店)+数据库,酒店管理系统APP+H5+小程序预订

    酒店管理系统(多酒店) APP+H5+小程序预订 完整代码下载地址:PHP酒店管理系统源码(多酒店)+数据库 安装手册(必看) 安装手册: (1)sql在根目录(hotel.sql),需要把表导入自己 ...

  6. 手机调试python的软件_Appium+Python(ios真机移动端App H5混合自动化实战测试)

    一.环境搭建篇 (一)安装JDK 大家自行安装 (二)安装Appium 1.appium desktop 2.appium server > brew install node # get no ...

  7. 得物 App H5秒开优化实战

    文/XU MING 关注得物技术,做最潮技术人! 背景 H5秒开优化是一个老生常谈的问题,于是得物技术联合了客户端和H5共同发力.本文将逐步介绍如何通过客户端 + H5 的优化手段(1+1>2) ...

  8. app h5 上传按钮多选_稿定小课堂之教你如何制作H5

    卡卡小课堂 ---第五堂课--- 主要是卡卡在社群中分享的一些小技巧课程总结,在小课堂里可以学习到一些很简单但是确很实用的技巧,获得不错的效果. 如果想要分享更多的技巧方法,可以私戳卡卡的窗哟~ 本次 ...

  9. 连接QuickBooks Online实现于IOS App数据同步功能的个人记录

    公司项目需要用WebService与QBO实现后台数据同步,由于国内没有做过类似第三方产品接口的资料,前前后后找了N久,终于实现功能,现把实现功能步骤贴上来分享: QBO开发者地址(主要用于创建QBO ...

最新文章

  1. dedecms 财付通接口
  2. prometheus 插件node_exporter 启动方式
  3. 英语和数学不好可以学python-Day2 怎么学 Python?
  4. matlab中ismember_ismember matlab
  5. matlab基于dct的图像压缩编码解码_基于FPGA的扩频系统设计(下)
  6. 硬核!尽量避免 BUG 手法
  7. QT的QBrush类的使用
  8. 第一节、Alex 讲解 python+mysql 交互;
  9. CV 里程计、推算定位与视觉里程计 简介
  10. 网站检测之防注入绕过的十一种技巧
  11. python基础小结(麻瓜图文总结版)
  12. mysql错误1215hy000_无法添加外键约束-MySQL错误1215(HY000)
  13. lwj_C#_集合的使用、接口方法的实现;
  14. 在PHP中用sleep导致诡异事件
  15. 微软商店无法连接网络的问题解决
  16. 牛客网 OI 赛制测试赛
  17. 手把手教学php表情包,手把手教你做微信表情包
  18. 图解图论介绍及应用(1):哥尼斯堡七桥
  19. Python常见面试题汇总(根据面试总结)
  20. (一)自学java必备技能开头篇:下载哔哩哔哩文件改名

热门文章

  1. android studio同步代码块,Android Studio快捷键大全
  2. android8 通知呼吸灯_Android中通知Notification使用实例(振动、灯光、声音)
  3. antd 验证 动态 required_3分钟短文:十年窖藏,Laravel告诉你表单验证的正确姿势
  4. bootstrap 两个轮播图冲突_Bootstrap的轮播图样式
  5. linux 生成dll文件,Linux和Windows平台 动态库.so和.dll文件的生成
  6. Java项目:精美风在线音乐网站(java+JDBC+C3P0+servlet+mysql+JSP)
  7. mongodb检查点_mongodb 监控命令mongostat
  8. python gui编程框架添加工具栏_python gui编程,我是初学者。用tk,制作下拉菜单的command不分我想打开另一个界面。如和解决,求解!!...
  9. 【bootstrap】bootstrap-4.5.0-example 各个模板展示
  10. url 通配符解析成参数