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 安装虚拟机及相关配置 ...
随机推荐
- oracle数据库简单的导入导出操作
一.数据库导出 1.导出用户名/密码,,导出用户名为test_expdp.导出路径默认为oracle中的dpdump文件中 expdp test_expdp/test_expdp@orcl direc ...
- MySQL pt-table-checksum及pt-table-sync校验及修复主从一致性
[pt-table-checksum]pt-table-checksum是percona-toolkit系列工具中的一个, 可以用来检测主. 从数据库中数据的一致性.其原理是在主库上运行, 对同步的表 ...
- CentOS7 修改默认时区为 北京时间
首先同步时间 yum install -y ntpdate ntpdate -u cn.pool.ntp.org 然后设置中国时区(北京时间) timedatectl set-timezone Asi ...
- Week12《java程序设计》第12次作业总结
Week12<java程序设计>第12次作业总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 面向系统综合设计-图书馆管理系统或购物车 ...
- losetup命令
Linux losetup命令用于设置循环设备. 循环设备可把文件虚拟成区块设备,籍以模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用. 语法 losetup [ ...
- Eclipse快捷键详细解析
android开发中常用的Eclipse快捷键详细解析 1.查看快捷键定义的地方 Window->Preferences->General->Keys. 2.更改启动页 在Andro ...
- css实现加载中的效果
那天闲着,学习了一下样式效果,自己实现了一个简单的加载中的效果 废话不多说,开始吧!! 一.实现一个圆环 要实现圆环,首先我们需要知道盒模型里面border的本质,先来看一个效果吧 从上面 ...
- 真机调试watch的一系列bug
真机调试watch的一系列bug 系列一 WatchKit 2.0 app's bundle ID com.jiaoshi.memoKB is not prefixed by the parent a ...
- 去除inline-block元素间间距的N种方法(转)
一.现象描述 真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距,很简单的个例子: <input /> <input type="su ...
- 在exsi6.0中安装debian8.1 64位 无界面服务器版.
之前介绍了exsi6.0的安装. 现在开始应用. 上一篇介绍的exsi6.0是安装在U盘上的系统.U盘为群联芯片,芯片型号为2251-50/30.容量为2G.发现容量足够用.比较节省成本. 现在开始为 ...