4年前在上一家公司,实现了一个RBAC平台,现在回头看一下,那个平台还很幼稚
一种常见的情况是,一个公司会有多个业务系统,每个业务系统都需要一些共享的东西
在我理解,共享包括2个层面:
较低的层面仅仅是二进制共享,比如数据库访问、服务路由等代码。将这些公共代码封装成jar包,如果没有业务系统的话,这些代码就无法运行
较高的层面是服务层面,比如用户管理、权限管理、登陆、鉴权、日志平台等。这个层面的东西,是能独立部署运行的,以组件的方式向业务系统提供服务。但并不是说这个层面就不向外提供jar包。一个典型的例子是CAS,除了服务端的CAS Server之外,也向客户端提供了CAS Client
我认为这2个层面综合起来,可以称为一个开发平台
上面所说的平台,涉及到以下这些概念:
统一用户:每个业务系统不需要单独维护用户信息,而是在平台统一维护用户信息,但是各业务系统可以根据自身的特殊业务,对用户信息进行扩展
单一用户管理:所有涉及到用户管理的动作,比如增删改,都在平台里实现
SSO:也就是单点登陆,在平台里实现所有业务系统的登陆和登出
LDAP:SSO的用户校验部分,有时候会基于LDAP实现,不过我个人感觉这个协议现在用得不太多
跨域访问(同源策略):javascript不能跨域运行(包括子域,比如mail.xxx.com上的脚本,不能修改message.xxx.com上的页面)
RBAC:一般来说,既然用户是在平台里统一管理,那么相应的群组和权限,也应该在平台里实现
我有一个想法,还没想得太清楚。
平台独立部署,作为SSO Server,业务系统登陆时,首先跳转到平台上,登陆成功以后进入一个index.jsp(index.jsp部署在业务系统所在服务器上,但是可能也是由平台提供的)
然后index.jsp加载index.js,发起ajax请求(可以用服务端代理的方式,绕过同源策略),在平台服务器获取用户的权限信息,在页面上渲染生成菜单
同时,平台提供了公共的js、css等公共UI组件,实现各业务系统的UI一致性,这个可以称为UI框架
此外,平台还提供了公共jar包,封装了各业务系统的公共代码
大致就是这样,总的来说,我认为一个完整的平台应该具备以下的特性:
1、提供公共的服务,业务系统无需重复实现
2、将公共代码封装成jar、js、css,简化业务系统开发
3、界限明确,平台提供的服务,必须保证业务无关性。在设计时就需要考虑清楚,什么东西应该放在平台里,什么东西应该交给业务系统自行实现
4、业务系统能够对平台提供的组件进行自定义扩展
5、当平台升级时,业务系统只需要进行简单的文件替换即可实现,即透明升级
分享到:
相关推荐
因此,我决定继续执行“创造一种跑步游戏”的想法,该游戏不仅要依靠自己的技能来获得高分,而且还需要一点运气–这意味着在每局比赛中未达到高分的可能性略有提高。由于涉及运气因素,因此比大多数游戏都要
这个想法是将基本的游戏制作概念组合成易于阅读的资源,有抱负的画布游戏开发人员可以选择该资源。 归因 提供的图像资产 使用创建的精灵表 还有我们朋友的一点帮助... 我是画布的新手。 几乎所有用于配合这款游戏...
2011年数据库大会部分ppt下载 丁原:海量数据迁移方案.pdf ...童家旺:我对后端优化的一点想法.pdf 赵振平:MYSQL数据库世界五百强应用一例.pdf 周淳:DM针对大数据量环境下分析型应用的支持方案v2.0.pdf
xray是什么 漏洞挖掘之JSONP JSONP 手动挖掘 漏洞挖掘的进化是从人工到自动化的过程 漏洞挖掘之JSONP自动化 JSONP检测-正则升级之路 漏洞挖掘的自动化依赖于优秀的检测算法 JSONP检测 - 语义分析 ...一点想法
坐在GitHub上以获取所有请求请求和问题跟踪器的优点,以轻松分别提交更改和想法。 建筑服务经理 出于某些奇怪的原因,您被自己构建此软件产品的奇异愿望所克服。 这里没有./configure && make。 只是很好的老式...
我积极使用Google日历,它向我发送了各种提醒(又名Pings:') ,因此,我认为我可以研究新的想法,而不必重新发明轮子。 另外,有很多工具可以从命令行与Google日历进行交互,并且它们还可以处理NLP。 因此,我...
MTK系统LCD部分的源代码,但不知为何是使用XI的门阵列编程,其余部分代码寻找并整理中。不过大家暂时不要对整个平台的代码有想法了,到目前为止未有泄漏过正常可用的版本。 看来MTK的代码还是要一点一点的攒阿。
最后,这几天它可能会使更多的意义构建TuxTruck一个基于Android的平台上,因为它已经内置了很多我们想要的东西的支持-从OBD作为事实上,抛开,目前Android手机和平板电脑几乎可以满足所有这些要求。 所以,下面是我...
我们相信学习编程的最佳方式是编写代码,而Lemaj旨在帮助提供一个平台来做到这一点。 将其视为或仅针对初学者和埃塞俄比亚程序员。 Lemaj将尽可能消除进入壁垒。 Lemaj这个词的意思是实习生,写作ለማጅ 。 如果您有...
童家旺—我对后端优化的一点想法 (2012) 梁敬彬—数据库优化方法论 罗敏——Oracle数据库私有云及数据库整合 专场9:NoSQL数据库创新专场—演讲嘉宾及主题 唐福林—Redis大数据之路 刘成华—电信行业的NOSQL技术探索...
在我关于使用Xamarin Forms创建持续的增强现实体验的演讲中得到了展示,该体验在乌拉圭举行的vOpen 2019会议上进行了演示,随后在其他演示和演示中它显示了一种在每个平台上使用PageRenderer进行初始化和使用ARCore...
碧灿最后但并非最不重要的一点是, <FIFE>/demos/pychan_demo中存在一个示例客户端,该示例显示pychan GUI库的工作方式。 通过运行pychan_demo.py启动GUI演示应用程序。Rio De Hola Rio de hola是一个技术演示,展示...
《计算机应用基础(远程教育)》课程学后感 为期两个月的课程培训马上就要结束了,花了不少时间完成这门课程的学习,在这个 过程中学到了挺多东西的,另外对这个培训平台也有一点点想法,下面就谈一下我的学 习心得...
最近忙于一个技术平台类项目,信息架构非常复杂,所以想写一些关于设计复杂信息架构产品的想法和经验。我们做产品设计的设计师日常工作粗略分一下,可以分为两类,一类是ToC产品,面向消费者的产品,一类是ToB产品,...
为此我们认识了三个朋友,我们决定制作一个移动应用程序(在服务器上有一个后端),作为三个Android开发人员已决定从该平台开始,然后继续使用其他平台。 有了这个应用程序,我们想要的是提供一个有用的工具,帮助...
在1990年11月13日他在一台NeXT工作站上写了第一个网页以实现他文中的想法. 在那年的圣诞假期,伯纳斯-李制作了要一个网络工作所必须的所有工具:第一个万维网浏览器(同时也是编辑器)和第一个网页服务器。 1991...
验船师目的这是一个模板应用程序,... 考虑到这一点,选择了Android平台。 数据成本:对于不知道其数据计划限制的用户而言,数据上载和下载可能是隐藏的成本。 为了最大程度地降低此调查可能对用户造成的成本,该应用
使用工具主要语言:C++ 用户界面库:Qt5项目目标使用 tox 的自定义数据包发送/处理作为通信手段的开源、跨平台的类似 Teamviewer 的屏幕共享。 聊天应该使用基本的 tox 聊天来实现(并且应该与 Teamviewer 的聊天...
CEP-Adobe的附加程序库(通用扩展平台)CEF-Chrome嵌入式框架-要了解这一点,请参阅下一节有关体系结构的内容。 建筑学 CEP(通用扩展平台)使您可以在Adobe Creative Cloud应用程序(如Photoshop,Illustrator,...