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 安装虚拟机及相关配置 ...
随机推荐
- bzoj1704
题解: 贪心 枚举k 然后判断一下是否可行 代码: #include<bits/stdc++.h> using namespace std; ; int n,a[N],b[N],sum,c ...
- UML_03_类图
一.前言 类图是UML结构图,在类和接口的层次上显示设计系统的结构,显示它们的特性.约束和关系等,是定义其它图的基础. 二.类图 如上图,在类图中表示方法如下: 斜体 :抽象类.抽象方法 下划线 :静 ...
- js 验证对象是否为数组
一.方法一:用到了原型 由于typeof检测数组,只会显示其为object,并不会详细到告诉我们是否为array,所以我们可以自己写个js用原型来检测: <script> /** * * ...
- 过滤器(Filter)
1 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如 ...
- Spring警告: Could not load driverClass com.mysql.jdbc.Driver(待解决)
在一个Spring项目中,新建了一个外部属性文件db.properties,在xml文件中利用${}来引用db.properties文件里面的属性. beans-properties.xml: < ...
- [置顶]
Android Glide传Context引发的非法参数异常那些小坑
今天中午调试一直出现nullContext 我的代码如下 解决办法: Glide.with(mContext) .load(mdl.getImage()) .centerCrop() .placeho ...
- loadrunner11 中文破解版安装教程
loadrunner11的安装:http://pan.baidu.com/share/link?shareid=316642707&uk=1395568298 汉化包(下载之后有可能是ISO格 ...
- 个人博客网站 www.superzhang.site
用django新建了一个博客网站,访问地址为www.superzhang.site.欢迎来逛逛.
- [译]HIPAA要求的SSL/TLS等级
原文链接:https://luxsci.com/blog/level-ssl-tls-required-hipaa.html 原文发表时间:2015.1.13 本博文仅仅是上述原文的翻译,仅供研究参考 ...
- BZOJ5450: 轰炸(水题,Tarjan缩点求最长路)
5450: 轰炸 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 43 Solved:18[Submit][Status][Discuss] Desc ...