zoukankan      html  css  js  c++  java
  • 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},可以让不同系统的手机跳转到不同网址,后续可以考虑支持。

  • 相关阅读:
    2-1(续)
    2-1
    28-69. Sqrt(x)
    27-75. Sort Colors
    26-78. Subsets
    MySQL--->存储引擎及图形化工具
    MySQL--->高级对象
    MySQL--->常用函数
    MySQL--->多表查询
    MySQL--->高级查询
  • 原文地址:https://www.cnblogs.com/xingqi/p/10176971.html
Copyright © 2011-2022 走看看