实施工程师_实施白色标签

实施工程师

实施工程师

有时(根据我的经验,很多时候)您需要为应用程序添加白色标签。 您通常可以以SaaS方式运行它,但是一些重要的或高知名度的客户端可能想要专用的部署或本地部署,或者只是在云部署中“自己的一角”。

白色标签通常包括不同CSS,不同的徽标和其他图像以及不同的页眉和页脚文本。 其余产品保持不变。 那么,我们如何以最小的侵入性方式支持白标? (我将在示例中使用Spring MVC,但是将逻辑移植到其他框架非常简单)

首先,让我们概述支持白色标签的三种不同方式。 您可以(可能应该)实现所有这些功能,因为它们在不同的场景中很有用,并且有很多重叠之处。

  • 标有白色的安装–更改整个部署的样式。 对于本地安装或托管安装很有用。
  • 白标子域–允许通过特定子域访问不同样式的服务
  • 标有白色的客户–登录后允许特定客户查看自定义样式

要实现全白标安装,我们必须在文件系统上配置放置定制css文件和图像以及定制文本的路径。 这是启动时传递给应用程序的.properties文件的示例:

styling.dir=/var/config/whitelabel
styling.footer=©2018 Your Company
styling.logo=/images/logsentinel-logo.png
styling.css=/css/custom.css
styling.title=Your Company

在Spring/Spring启动中,如果某个URL模式匹配,则可以从文件系统中服务器文件。 例如:

@Component
@Configuration
public class WebMvcCustomization implements WebMvcConfigurer {
  @Value("${styling.dir}")
  private String whiteLabelDir;

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/whitelabel/**").addResourceLocations(whiteLabelDir);
  }
}

最后,您需要自定义HTML模板,但是当所有其他选项也都实现时,我们将在最后讨论。

接下来是白标子域。 对我来说,这是最好的选择,因为它使您可以一次安装多个具有特定样式的客户。 样式仅取决于访问服务所通过的域/子域。

为此,我们需要引入一个实体WhitelabelStyling和一个相应的数据库表。 我们可以创建一些管理界面来进行配置,或者直接在数据库中进行配置。 该实体可能看起来像这样:

@Table("whitelabel_styling")
public class WhitelabelStyling {
    @PrimaryKey
    private String key;
    @Column
    private String title;
    @Column
    private String css;
    @Column
    @CassandraType(type = DataType.Name.BLOB)
    private byte[] logo;
    @Column
    private String footer;
    @Column
    private String domain;

   // getters and setters
}

密钥是您选择的任意字符串。 它可能与(sub)域或其他一些有意义的字符串相同。 其余大部分是显而易见的。 有了这些之后,我们需要能够提供资源。 为此,我们需要一个控制器,您可以在这里看到。 控制器选择一个白色标签的密钥,并尝试从数据库中加载相应的条目,然后提供结果。 在这种情况下,控制器端点为/whitelabel-resources/logo.png/whitelabel-resources/style.css

为了为特定的子域设置适当的密钥,您需要每个请求的模型属性(即,在要呈现的所有页面的模型中设置的值)。 这样的事情(每天刷新一次白色标签的缓存;如果您不想在每个请求中都访问数据库,则必须使用缓存):

@ModelAttribute("domainWhitelabel")
public WhitelabelStyling perDomainStyling(HttpServletRequest request) {
    String serverName = request.getServerName();
    if (perDomainStylings.containsKey(serverName)) {
        return perDomainStylings.get(serverName);
    }
    return null;
}

@Scheduled(fixedRate = DateTimeConstants.MILLIS_PER_DAY)
public void refreshAllowedWhitelabelDomains() {
     perDomainStylings = whitelabelService.getWhitelabelStyles()
            .stream()
            .collect(Collectors.toMap(WhitelabelStyling::getDomain, Function.identity()));
}

最后,使用相同的控制器以与上述相同的方式为每个客户添加白标签,不是仅基于request.getServerName()而是基于当前已认证用户的属性来获取当前密钥。 管理员(通过UI或直接在数据库中)可以为每个用户分配一个whitelabel密钥,然后在登录后,该用户将看到自定义样式。

我们已经看到了解决方案的Java部分的外观,但是我们需要修改HTML模板以选择自定义项。 一种简单的方法如下所示(使用卵石模板):

{% if domainWhitelabel != null %}
  <link href="/whitelabel-resources/style.css?key={{ domainWhitelabel.key }}" rel="stylesheet">
{% elseif user.whitelabelStyling != null and user.whitelabelStyling.css != '' %}
  <link href="/whitelabel-resources/style.css" rel="stylesheet">
{% elseif beans.environment.getProperty('styling.dir') != '' and beans.environment.getProperty('styling.css.enabled') == true %}
  <link href="{{'/whitelabel/'+  beans.environment.getProperty('styling.css')}}" rel="stylesheet">
{% else %}
  <link href="{{ beans.environment.getProperty('styling.css')}}" rel="stylesheet">
{% endif %}

这非常简单–如果配置了域级别的白色标签,则使用该标签; 如果不是,请检查当前用户是否分配了特定的白标签; 如果没有,请检查是否配置了全局安装白色标签; 如果不是,请使用默认值。 此代码段利用了上面的WhitelabelController (在前两种情况下)和倒数WhitelabelController情况下使用了自定义资源处理程序。

总体而言,这是一个灵活,简单的解决方案,即使在现有系统上也不需要花费几天的时间即可实施和测试。 我将再次表达我对基于域的样式的偏爱,因为它们允许使用多个不同样式和徽标使用相同的多租户安装。 当然,您的Web服务器/负载均衡器/域应正确配置以允许子域并让您轻松管理它们,但这是不合时宜的。

我认为白色标签是许多产品的好方法。 显然,除非业务需要它,否则不要实施它,但要记住,它可能会落伍,并且相对容易实施。

翻译自: https://www.javacodegeeks.com/2018/07/implementing-white-labelling.html

实施工程师

cunhui1209
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实施工程师具备的专业技能
凉城的博客
07-11 1万+
首先具备计算机基础,计算机网络(网络七层结构)相关配置; 一、常用的数据库 1、SQL2000、SQL2005、SQL2008(iis),SQLServer2008; 2、Oracle 、mysql ; 熟悉常用的SQL语句(4表联查,数据备份,导入导出),会写视图,navicat、PLSQL,以及使用客户端工具的一些常用操; 会安装,调试,维护,并且会使用里面常见的功能 例如备份 还原等等...
软件实施工程师个人简历.docx
11-28
软件实施工程师个人简历 SOFTWARE 实施工程师个人简历是软件实施工程师职业发展的重要步骤,以下是软件实施工程师个人简历的详细知识点: 一、软件实施工程师个人简历的重要性 软件实施工程师个人简历是软件实施...
各大工程师所需技能图谱
04-28
包含DBA、H5、ios、大数据等工程师技能所需图谱,GET了当下最热门、最火爆的技术知识点,让你一库在手,技术全有!
2018年最新 IT工程师技能图谱
06-01
2018年最新 IT工程师技能图谱,涵盖所有技术最新技术点。
软件实施工程师需要掌握的技能
qq_34087403的博客
11-07 2万+
一、软件工程师概述 1、合理的调配现场资源和公司资源,制定推进计划并保证实施; 2、用最快的时间完成项目验收。 二、需要掌握的技能 1、操系统 如:Window、LINUX等等; 2、需要掌握操系统的命令 如:pingIP、远程、系统服务等等; ...
实施工程师的工流程_实施_
10-01
实施工程师在IT行业中扮演着至关重要的角色,他们负责将软件系统、硬件设备或网络解决方案从设计阶段推向实际应用。以下是对实施工程师流程的详细解释,以及与之相关的经典案例分析。 1. 需求收集与分析:实施...
软件实施工程师简历.pdf
11-17
软件实施工程师简历.pdf
软件实施工程师面试题目.doc
11-29
软件实施工程师面试题目 软件实施工程师面试题目是软件实施工程师的面试题目汇总,涵盖了计算机网络、软件实施数据库等多个领域。以下是该文件的知识点总结: 1. 电脑网络故障排除:软件实施工程师需要掌握...
软件实施工程师的职责模板.doc
12-16
软件实施工程师的职责模板 软件实施工程师的职责模板是一份详细的职责描述文档,旨在明确软件实施工程师的主要职责、任职要求和技能要求。根据不同项目需求,软件实施工程师的职责模板可以有所不同,但软件实施...
实施工程师或技术支持必须熟悉的技能
热门推荐
Mr.O~的博客
09-14 3万+
一、常用的数据库 1、Sql2000、sql2005、sql2008; 2、Oracle 、mysql ; 会安装,调试,维护,并且会使用里面常见的功能  例如备份  还原等等 要求:能写查询,修改,删除语句,有一定的动手能力,最好是能看懂存储过程和游标。 二、操系统 1、常见的操系统: Window7,Window10,xp; 2、服务器操系统: Window server 2008、组...
软件项目实施工程师应该具有的技能
houxianjun10的专栏
07-31 3798
软件项目实施工程师,一个听起来很牛的职位,其实就是不是想象的那么回事
cmd命令【实施工程师技能】
红目香薰
11-11 1110
为什么使用cmd命令 【cli】模式相信为【实施工程师】的人们肯定的用很多,测试网络连通性,测试环境变量搭建是否成功都会用到,那么,对于小的【实施工程师】本篇文章会有很高的价值。 cmd基础命令 首先,我们要知道cmd的打开方式,win10可以通过win键+R打开运行。开始-运行-输入cmd即可打开。 cmd 进入cmd后键盘输入【ALT+回车】进去全屏模式。 我们试着输入【help】(帮助)然后按回车键会出现很多指令,针对不认识cmd指令的朋友来说,这些就是帮助的材料。 he
实施工程师的必备技能
linshenshijianlu的博客
05-14 1万+
实施工程师的必备技能 写这篇文章,是为了用来记录过去一年工的心得以及体会,也为新的工做一个铺垫吧! 实施测试环境的搭建 环境的搭建主要涉及到的是代码以及数据库的部署,一般的话会包括两个应用服务器(在linux服务器上),一个是应用服务器,一个是数据库服务器,分别用来放置代码的路径以及数据库的工具等; 一般由行方来提供服务器的地址,我们在服务器地址下面设置路径放置代码以及数据库服务器。 ...
java学习----递归
qq_56798493的博客
07-13 163
【代码】java学习----递归。
JavaSE》---6.<基础语法(Java三大程序控制结构)>
最新发布
m0_73456341的博客
07-14 789
本篇博客主要讲解Java基础语法中的三大结构,一种顺序结构、两大分支结构i(if-else、swich-case)、四大循环结构(while、do while、fot、foreach)
java版的上门家政系统和PHP版的上门家政有什么区别?
baina666的博客
07-12 629
综上所述,Java版和PHP版的上门家政系统各有优缺点,选择哪种语言主要取决于项目的具体需求、预算、开发团队的技术栈以及未来的扩展计划等因素。同时,由于Java生态系统的复杂性和多样性,也可能需要投入更多的时间和资源来学习和掌握相关的技术和工具。Java版:Java拥有庞大的生态系统和丰富的第三方库,这为家政系统的开发和扩展提供了强大的支持。Java版:由于Java的编译执行机制和高效的垃圾回收算法,Java版家政系统通常具有更高的运行效率和更好的性能表现,尤其是在处理高并发、大数据量等复杂场景时。
Spring Security 授权
persistence_PSH的博客
07-14 869
在 loadUserByUsername 方法,在查询数据库用户信息的时候,同时查询出用户的权限,这里以角色名代指权限。在 loadUserByUsername 方法,在查询数据库用户信息的时候,同时查询出用户的权限,这里以角色名代指权限。在 loadUserByUsername 方法,在查询数据库用户信息的时候,同时查询出用户的权限,这里以角色名代指权限。通过 RBAC 获取到用户的具体权限后,再通过 Security 的 用户-权限-资源 来进行权限控制。HttpSecurity 权限配置。
【Go系列】 Sync并发控制
u013379032的博客
07-14 997
在上一篇文章中,我们介绍了goroutine和channel,理论上,通过channel可以实现并发控制,但是其他语言的开发者可能更习惯一些原子操的库。当然Go语言也会提供这样的库,所以我们今天了解一下sync库。
IT实施与软件工程师职业发展路径
"本文主要探讨了IT实施领域中软件工程师的职业发展路线,强调了职业规划的重要性,并通过案例分析和角色分类提供了指导。" 在IT行业中,软件工程师的成长路径多样,而IT实施是其中一条重要的方向。实施工程师不仅...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 在Android模拟器上安装Google Play 6327
  • graalvm_GraalVM简介(社区版):革命还是进化? 4375
  • @apinote_新的Javadoc标签@ apiNote,@ implSpec和@implNote 3801
  • Android Studio简介 3261
  • jvm优化_GraalVM简介(社区版):适用于JVM应用程序的GraalVM 2637

最新文章

  • nfc ndef协议_NFC Android:读取NDEF标签
  • nosql数据库有哪些_Android上的NoSQL
  • axios拦截器_在Android上拦截传入的短信
2021年79篇
2020年120篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

PHP网站源码龙岗企业网站建设丹竹头关键词按天扣费观澜外贸网站建设龙华seo网站优化龙华seo网站推广东莞关键词按天计费南山网站设计模板沙井网站seo优化盐田网站改版坑梓网站改版坪山营销型网站建设丹竹头标王宝安营销网站西乡关键词排名包年推广同乐百姓网标王推广大芬百搜标王大芬优化石岩网站排名优化福永网络营销荷坳网页设计大运如何制作网站大芬优化塘坑网站改版南澳seo网站优化荷坳网站设计模板吉祥网页制作大浪建网站惠州seo优化南山网站设计坪山网站建设歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化