本文对单点登录有一个初步介绍,重点叙述前端开发者使用单点登录可能遇到的问题,以及问题分析!
方案全部来源于用友建筑云,本文仅用于内部分享,所以不过多介绍方案实现。
原文来自博客

单点登录介绍

  • APP在打开应用时用当前登录用户身份向MA申请一个令牌token
  • MA判断权限并返回令牌
  • Web使用token和appid去移动平台进行验证,验证是否合法
  • MA验证Token,如果合法则返回第三方移动应用对应的用户信息

容易出现的问题

  • 1.用户想要的应用没有显示在应用列表中?

要确认:上架、授权;
区分应用分类:应用中心,内置应用,静态资源;
区分获取应用列表接口的多个接口。
后期值得考虑本地排序和后端排序,以及最近访问记录等拓展应用中心能力。

  • 2.调用交互方法时没反应没报错?

yyplus:call undefined?检查yyplus引用路径,以及yyplus 入口js中的maurl定义路径是否正确。

  • 3.用户点击应用时提示无权限?

原生调用validata接口时auth参数为需要鉴权,所以需要在应用管理中给应用授权。
因为迁移,这其中的授权会不会影响也是有可能的。

  • 4.应用鉴权出错,以及返回信息错误?

同上

  • 5.Url不正确,参数获取失败?

IOS容易出现url不对,已经解决过,但是老的版本APP代码同步情况不明,url不对会导致getRequest方法出现混乱,在url中传参就会导致错误参数,错误数据。
客户或者其他开发组的getRequest方法是否正确对于帮助其他人和我们联调也是值得注意的地方

  • 6.校验失败?

一般不容易出现校验失败,出现原因,现在极大可能就是APP迁移和应用迁移不同步。

  • 7.返回信息取不到用户组织人员造成页面空白?

页面空白无报错,很有可能是前端组装ext时没有取到相应信息return false了。
另一个极大可能就是yyplus没有执行加载完毕调用了getCompany方法。

进阶说明

先来一个看图说话(test单个样例)


  • index.js加载时间几乎在3000ms
  • getWorkbenchCookie在100-200ms
  • yyplus安卓版下载资源异步还需要1000ms
  • checktoken需要1500ms

内部应用如何跳过验证阶段,加速打开应用(优化一秒)

内部应用是否可以跳过生成token阶段,加速打开应用(无数据至少也是1-2秒)

  • 方案一:正常情况下(应用中心入口,内置应用员工自助,openWebview)不进行鉴权以及validata验证;流程图简化为原生openwebview》》原生注入cookie》》轻应用通过cookie获取上下文(不需要调用getCompany方法)

可能出现的问题:

  • 轻应用单点登录日志如何记录?
  • cookie对于内部应用是否足够安全?

优化后流程图:

需要改造的点:

  • 原生
  1. 打开webview时需要判断单点登录类型,根据单点登录类型做不同操作
  2. 写入的cookie改为icop_context(由登录是得到,之后缓存到全局,不重新登录该值不变)
  • web
  1. 修改authtoken

    • java
  2. 应用管理区分单点登录类型(token令牌,cookie,直接登录,用户密码)
  3. 添加单独鉴权接口,添加根据appid获取APP信息的接口,原有的validata存储的token不变,由于第三方使用依然需要存储在数据库,checktoken时依然需要在数据库中校验
  4. 微信单点登录与友空间单点登录(新加一个方法)改造成返回icop_context

交互插件内置的可行性(优化一秒)

交互插件内置方案一:探索Cordova前端使用,固定文件,开发社区一定提供了内置方案;
方案二:走已知方案,直接将源码打包进入原生;

webpack打包的优化(优化2秒)

生产环境去除source-map;
加入懒加载;常用的有 webpack 插件 bundle-loaderreact 自带的 react-loadable 决定使用bundle-loader
经过第一步发现性能的根源在于yylib-antd-mobile没有按需加载,导致js有2M,继续根据组件库的性能按需加载

从前端开发者看待用友建筑云移动端单点登录与报错原因相关推荐

  1. 微信小程序使用云开发实现微信支付功能 报错Error: 签名错误,史上最全解决办法,不服留言骂我

    报错背景 微信小程序使用云开发实现微信支付功能,但是报错了 报错信息 报错原因 小程序想要使用微信支付,必须满足下面几个条件的 1,必须是非个人小程序(个人小程序用不了支付) 企业小程序需要认证! 2 ...

  2. Java架构-(十) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)

    之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一.oauth中的角 ...

  3. Spring Cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  4. 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)

    之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一.oauth中的角 ...

  5. (十) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)

    之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAuth2.0的一些基础知识点,帮助大家回顾一下知识点: 一.oauth中的角 ...

  6. Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

    上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * ...

  7. 前端直接访问登录页面报错_如何实现登录、URL和页面按钮的访问控制

    作者:社会主义接班人 http://cnblogs.com/5ishare/p/10461073.html 用户权限管理一般是对用户页面.按钮的访问权限管理.Shiro框架是一个强大且易用的Java安 ...

  8. 前端把cookie写在父域里_单点登录的三种实现方式

    前言 在 B/S 系统中,登录功能通常都是基于 Cookie 来实现的.当用户登录成功后,一般会将登录状态记录到 Session 中,或者是给用户签发一个 Token,无论哪一种方式,都需要在客户端保 ...

  9. 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程

    现在我们针对于login做成相关的微服务,解析如下: 请求方式:POST 服务URL: http://localhost:8080/user/login 参数类型:application/json H ...

最新文章

  1. 现代软件工程 第十六章 【IT 行业的创新】练习与讨论
  2. ajax请求挂起_Ajax请求内部循环挂起浏览器?
  3. 仿个人税务 app html5_手机里发现这类APP,赶紧删!
  4. ASMCMD 命令详解
  5. c语言中二次规划函数是哪个好,c语言程序设计规划模拟试题二(含答案).doc
  6. vue-cli,webpack安装
  7. 计算机系统组装 维护常用工具及其作用,《计算机系统组装维护》课程实用标准.doc...
  8. 网络软文发布软件_星浪中合网软文写出爆款汽车营销软文的特点是什么?
  9. Lua语言模型 与 Redis应用
  10. 海量数据下的存储技术,哪些模式靠得住?
  11. 前端开发中,对图片的优化技巧有哪些?
  12. 详解MySQL双活同步复制四种解决方案
  13. 产品研发流程与周期(非原创)
  14. dosbox中out of memory_flink教程-详解flink 1.11 中的JDBC Catalog
  15. 爬取嘉兴市人才网即时招聘信息并写入文本TXT完整案例
  16. PLC可编程控制器的应用
  17. WIN10如何进入BIOS界面
  18. ensp启动路由 40错误-已解决
  19. [ CTF ]【天格】战队WriteUp-第六届”蓝帽杯“全国大学生网络安全技能大赛(半决赛)
  20. Mac 上的 Alt 键是哪个?Alt 或 Option 键在 Mac 键盘上的作用是什么

热门文章

  1. 在c语言中realloc_C和C ++编程中的realloc()
  2. jQuery has(),not()和filter()函数示例
  3. 深入了解C++变量类型有哪些
  4. 人工智能时代,技术人员应该掌握的技能
  5. 如何截取滚动的页面,窗口
  6. 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定...
  7. 管道 通过匿名管道在进程间双向通信
  8. PS替换图片图标操作
  9. 线代中最基础的两种玩法
  10. 资源图与死锁定理的灵活运用