用户登录部分
RSA:使用非对称加密的方式进行传输,前端用公钥进行加密,服务端使用密钥进行解密。
新框架如何嵌入到老框架中?
用iframe嵌入,使用postMassage()通信。
Web Component 组件化开发,如何拆分组件?
项目改造问题:
为什么要改:
旧项目是单个jsp项目,前后端不分离,巨石应用。老网银是一个壳(包含登录、菜单等)中使用iframe加载的各个功能
改造方案:
前端用微前端qiankun+iframe;
改造过程中前端 epw-eweb 和 eweb(前)并行;
服务端:epw 和 eweb(后) 并行
为啥选用微前端:
业务结构分为十三个模块,各模块功能相对独立。分离比较好维护,可以单独开发、打包和部署。
为啥还用了iframe?
各子应用对应模块不是一次能改完的,而是渐进式改造的。存在新老功能并行情况。而老网银之前各业务功能是通过iframe加载的,各页面依赖程度不强。所以不改造的功能暂时用这加载。
咋实现的:iframe和router 进行切换?
如果菜单(老网银返回)name和router中定义路由的name匹配,则进入新页面,否则进入iframe老页面
中间遇到的问题:
1、iframe中老页面提示部分window方法找不到解决:
用新网银实现,挂载到window上供老页面调用(相当于实现一遍老网银壳上定义的方法),如一个老页面要跳掉另一个老页面,老页面调用了parent.window.gotoOtherPage方法,我们需要在新网银上实现该方法供其调用)
2、iframe中老页面跨域和授权问题解决:通过nginx代理eweb相关请求和链接解决
3、会话保持问题(该问题仍未解决)
问题原因:改造后产生两个服务,epw和eweb(可以引出我们登录改造),在客户长时间做新交易时,老交易(eweb服务器)15分钟未接收到请求会判定会话失效;反之也是,所以需要会话保持。
妥协办法:设置定时器每隔一段时间分别调用一次(带来会话永久有效问题;通过 监听关闭浏览器、关闭标签页、拔出U盾事件,在事件中调用退出登录方法等妥协处理)
5.高并发的时候,下载阻塞
解决办法:nginx下载限速
按请求速率限速,ngx_http_limit_req_module,限制单个IP发送请求的速率,超出指定速率后,Nginx将直接拒绝更多的请求。
http {
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
...
server {
...
location /search/ {
limit_req zone=mylimit burst=4 nodelay;
}
}
}
有发布过 npm 包吗?
签名验签控件(内网)
里边有三个方法主要的方法,getCertList()获取证书列表 SN()设置前面证书序列号 SignData()签名
name、version、discription、main、files
license: 'MIL', 开源协议
先本地build之后,去发布
npm
npm publish