Liveqrcode活码系统设计
活码是一种二维码,可以通过后台配置让用户扫码时跳转到不同的网址。除了二维码生成接口,本站还实现了多租户的活码配置接口,以及活码后台jar包,详见二维码接口。
二维码生成使用了zxing三方包实现,活码配置接口使用了redis存储多租户信息,代码比较简单,这里主要介绍两个细节。
1,多租户(多域名、多主机)与接口访问权限的处理问题
接口访问权限使用的是ip白名单机制,曾经设计为标记租户的主机ip来为其活码后台jar授权接口访问,但又考虑到活码后台托管时不方便处理(单主机+多托管户),另外接口又已开放给showapi的用户访问,于是想到了接口权限与活码租户解耦的办法:ip白名单只用于授权接口访问,活码后台jar提供showapi_userName参数以便区分多租户(托管时根据域名不同提供不同的租户参数)。
实际使用场景:
用户甲再showapi注册了账户lurenjia,调用showapi接口访问活码配置接口时自动提供了用户信息lurenjia。
用户甲在自有的主机ip上部署了定制的活码后台jar包,访问活码配置接口时也提供用户信息lurenjia,因此可以访问到上一步配置的跳转网址。
2,活码后台jar代码
配置用户信息:定制时仅配置某个域名,托管时多个域名都配置
liveqrcode.userNames={"domain1.cn":"lurenjia","domain2.com":"lurenyi"}
相关代码:区分域名传递不同的用户信息
@Value("#{${liveqrcode.userNames}}") Map<String, String> userNames;
@RequestMapping(value="/{code}", method=RequestMethod.GET)
public String redirect(@RequestHeader ("host") String host, @PathVariable String code)
String userName = userNames.get(host);
还可以考虑在活码后台分析客户端的设备参数,让活码配置的网址url可以携带变量,例如domain/{os},可以让不同系统的手机跳转到不同网址,后续可以考虑支持。
Liveqrcode活码系统设计的更多相关文章
- win10企业版|激|活|码
使用下面的激活码升级成企业版 NPPR9-FWDCX-D2C8J-H872K-2YT43 激活后,如果右下角出现未激活的白色字体用cmd命令,管理员窗口运行下面的命令 win10企业版用户请依次输入: ...
- pyCharm-激活码(2018)
最近使用pycharm的时候,用的是很久以前的激活地址 于是网上到处寻找最新地址,然而 网上之前分享的激活地址已经多半过期, 于是找朋友帮忙,终于找到一个可用的了 1.选择 Activate new ...
- 扫二维码下载apk并统计被扫描次数(及微信屏蔽下载解决方案)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5395715.html 需求:想让用户扫描一个二维码就能下载APP,并统计被扫描次数. 两种实现方法: 1.一 ...
- 好推二维码如何通过应用宝微下载支持微信自动打开APP下载?
好推二维码 官网 http://www.hotapp.cn 1. 为什么使用应用宝微下载? APP下载二维码,通过微信扫描下载的时候,微信目前只支持应用宝微下载,才能在微信里直接打开下载,否则就需要在 ...
- 基于git的博客(含站点与小程序)
1 效果 静态站点: blog.makergyt.com 备用链接: github.blog.makergyt.com 小程序: 语雀:<MakerGYT blog> 2 需求分析 2.1 ...
- MyEclipse9.0激活步骤
MyEclipse 9.0的激活机制 1.破解公钥(确保MyEclipse没有开启,否则失败!) 解压破解包中的myeclipse9_keygen_activator.zip,复制publicKe ...
- Navicat Premium Mac破解版安装方法
第一步:这部分暂时存到文本编辑器中 公钥: -----BEGIN PUBLIC KEY-----MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQB8vXG0ImYh ...
- 最新版Navicate破解激活
2019年5月5日激活成功 版本12.1.18 Navicat12.1下载地址 http://www.navicat.com.cn/download/navicat-premium有32位和64位,大 ...
- Oracle虚拟机 与 windows配置
目录 相关资料 安装虚拟机及相关配置 安装PLSQL Developer Navicat Premium登录数据库 踩坑之路 相关资料 oracle虚拟机配置 提取码:s3sg 安装虚拟机及相关配置 ...
随机推荐
- MySQL Block Nested-Loop Join(BNL)
5.5 版本之前,MySQL本身只支持一种表间关联方式,就是嵌套循环(Nested Loop).如果关联表的数据量很大,则join关联的执行时间会非常长.在5.5以后的版本中,MySQL通过引入BNL ...
- 性能优化 - 查看 webpack 打包后所有的依赖关系(webpack 可视化工具)
查看 webpack 打包后所有组件与组件间的依赖关系,针对多余的包文件过大, 剔除首次影响加载的效率问题进行剔除修改,本次采用的是 ==webpack-bundle-analyzer(可视化视图查看 ...
- Redis数据结构:字典(hash表)
使用场景: # set person name "tom" # set person name "jerry" 1. 字典结构: 哈希表数据结构 typedef ...
- WiFi无线网络参数 802.11a/b/g/n 详解
转载自:WiFi无线网络参数 802.11a/b/g/n 详解 如转载侵犯您的版权,请联系:2378264731@qq.com 802.11a/b/g/n,其实指的是无线网络协议,细分为802.11a ...
- New Concept English three(15)
31w/m 43 Children always appreciate small gifts of money. Father, of course, provides a regular supp ...
- PostgreSQL文档编译
之前一直没有将doc进行编译,最近编译成功了,却无法用man来查看,发现是没有将man的目录添加到搜索路径: MANPATH /usr/pgsql-10/share/man 加入到 /etc/man. ...
- (一) ffmpeg filter学习-使用流程
FFMPEG中有一个类库:libavfilter.该类库提供了各种视音频过滤器.之前一直没有怎么使用过这个类库,最近看了一下它的使用说明,发现还是很强大的,有很多现成的filter供使用,完成视频的处 ...
- paddlepaddle初步印象
从其官网整理了一些资料如下: 1.基本概念 基本使用概念 PaddlePaddle是源于百度的一个深度学习平台.PaddlePaddle为深度学习研究人员提供了丰富的API,可以轻松地完成神经网络配置 ...
- Keras 自定义层
1.对于简单的定制操作,可以通过使用layers.core.Lambda层来完成.该方法的适用情况:仅对流经该层的数据做个变换,而这个变换本身没有需要学习的参数. # 切片后再分别进行embeddin ...
- Pandas库常用函数和操作
1. DataFrame 处理缺失值 dropna() df2.dropna(axis=0, how='any', subset=[u'ToC'], inplace=True) 把在ToC列有缺失值 ...