首页 > 其他 > 详细

Liveqrcode活码系统设计

时间:2018-12-26 00:03:54      阅读:180      评论:0      收藏:0      [点我收藏+]

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

原文:https://www.cnblogs.com/xingqi/p/10176971.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!