Liveqrcode活码系统设计

本文深入解析活码技术,一种通过动态调整二维码链接指向不同网址的方法。介绍了活码配置接口、多租户支持及其实现细节,包括使用redis存储租户信息、ip白名单授权机制以及如何通过域名区分多租户。

活码是一种二维码,可以通过后台配置让用户扫码时跳转到不同的网址。除了二维码生成接口,本站还实现了多租户的活码配置接口,以及活码后台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},可以让不同系统的手机跳转到不同网址,后续可以考虑支持。

转载于:https://www.cnblogs.com/xingqi/p/10176971.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值