cas的主题配置与管理
cas的主题配置与管理
文章目录
- cas的主题配置与管理
- 一、简介
- 二、主题的配置
- themeName与basename之间的关系
- 三、实现原理分析
- 四、总结
一、简介
cas可以实现动态多主题的管理,同一个cas访问不同的应用的时候可以做到千人千面
,即根据访问服务的不同,如数据中心、开放平台,可以在一个服务端上实现不同的登录样式。
提问
什么时候去新建basename?
什么时候去新建theme?
当页面变化很大,不能通过配置新的css、js来实现新的主题时,可以考虑新建一套视图,如采用新的前端技术架构。这时需要新配置一个basename,否则新建theme即可。
二、主题的配置
cas配置核心文件为:cas.properties
。
所有的配置都和下面2个配置息息相关:
cas.themeResolver.defaultThemeName
配置的是默认主题;cas.viewResolver.basename
是静态页面所在文件夹,且只能设置一个,如果页面结构、样式不去大改,我们定义一个新主题就可以啦。
目前我们的cas中共有3个主题样式:
ThemeName | basename | 页面映射配置 |
---|---|---|
cas-theme-default | custom_views | custom_views.properties |
cas-theme-deepBlue | ||
cas-theme-orange | ||
themeName与basename之间的关系
- 引用配置
ThemeName的名称会对应到一个同名的properties文件,该文件下引用了一个css样式文件和一个js文件:
standard.custom.css.file=/css/cas.css
cas.javascript.file=/js/cas.js
- css配置
webapps下有个themes文件夹,下一级文件夹命名与cas.viewResolver.basename
中的前半段名称相匹配,如cas.viewResolver.basename=custom_views
时,则文件夹的名称应为:custom
视图配置——静态页面文件夹,对应basename
我们知道CAS基本的框架是MVC,视图配置则定义了每个类与页面之间的映射关系,页面都需要使用jsp格式。
文件路径在:src\main\webapp\WEB-INF\view\jsp*
三、实现原理分析
- 主题解析器
cas的bean里有一个themeresolver
,注入了servicesManager。实现类ServiceThemeResolver中的resolveThemeName方法查询并返回对应的主题配置信息。
<!-- Theme Resolver --><bean id="themeResolver" class="org.jasig.cas.services.web.ServiceThemeResolver"p:defaultThemeName="${cas.themeResolver.defaultThemeName}"p:argumentExtractors-ref="argumentExtractors"p:servicesManager-ref="servicesManager"><property name="mobileBrowsers"><util:map><entry key=".*iPhone.*" value="iphone"/><entry key=".*Android.*" value="iphone"/><entry key=".*Safari.*Pre.*" value="iphone"/><entry key=".*Nokia.*AppleWebKit.*" value="iphone"/></util:map></property></bean>
@Overridepublic String resolveThemeName(final HttpServletRequest request) {if (this.servicesManager == null) {return getDefaultThemeName();}final Service service = WebUtils.getService(this.argumentExtractors, request);final RegisteredService rService = this.servicesManager.findServiceBy(service);// retrieve the user agent string from the requestString userAgent = request.getHeader("User-Agent");if (userAgent == null) {return getDefaultThemeName();}for (final Map.Entry<Pattern, String> entry : this.overrides.entrySet()) {if (entry.getKey().matcher(userAgent).matches()) {request.setAttribute("isMobile", "true");request.setAttribute("browserType", entry.getValue());break;}}//查询为服务个性化配置的主题配置return service != null && rService != null && StringUtils.hasText(rService.getTheme())? rService.getTheme() : getDefaultThemeName();}
视图解析器
cas-servlet.xml中一个bean。
<!-- View Resolver --><bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver"p:order="0"><property name="basenames"><util:list><value>${cas.viewResolver.basename}</value><value>protocol_views</value></util:list></property></bean>
public class ResourceBundleViewResolver extends AbstractCachingViewResolverimplements Ordered, InitializingBean, DisposableBean {/** The default basename if no other basename is supplied. */public final static String DEFAULT_BASENAME = "views";private int order = Integer.MAX_VALUE; // default: same as non-Ordered//我们可以看到basenames是一个数组private String[] basenames = new String[] {DEFAULT_BASENAME};
四、总结
cas页面、主题的正确配置方法:
基于service管理的主题,其basename必须保持一致,即属于同一套视图,否则会出现报错,因为视图解析时是基于一个文件夹实现静态文件与视图的映射;反例:
当页面变化很大,不能通过配置新的css、js来实现新的主题时,可以考虑新建一套视图,如采用新的前端技术架构。这时需要新配置一个basename。
当页面实现技术不变,仅通过css、js即可实现样式调整,新建theme即可。
cas的主题配置与管理相关推荐
- CAS单点登录(五)——Service配置及管理
在上一节我们讲述了CAS中关于自定义认证登录策略,对CAS中关于自定义登录配置的方案,校验策略有了一定的了解,如果忘记了可以去复习一下------CAS单点登录(四)--自定义认证登录策略.这节本来该 ...
- 英特尔分布式深度学习平台Nauta-安装、配置与管理指南
2019独角兽企业重金招聘Python工程师标准>>> 英特尔分布式深度学习平台Nauta-安装.配置与管理指南 随着人工智能的发展,深度学习的价值不断增长,但实现它可能是一个复杂耗 ...
- Kafka主题(Topic)的管理
主题的管理包括创建主题. 查看主题信息.修改主题和删除主题等操作.可以通过 Kafka 提供的 kafka-topics.sh 脚本来执行这些操作,这个脚本位于 $KAFKA_HOME/bin/目录下 ...
- 【Windows Server 2019】FTP服务的配置与管理——配置FTP站点(下)SSL设置及被动模式
目录 5.5.FTP SSL设置 准备工作 (1)创建FTP用户访问组 (2)编辑FTP站点[fjnu-ftp]的权限 (3)创建SSL证书 *配置FTP SSL 验证 (1)不加密访问FTP服务 ( ...
- sublime html主题,自用Sublime Text 插件主题配置大全
原则上收费的,但可以试用,试用期是免费的,在试用期间会提示你购买. package control 首先必须要介绍的就是这个,它是用来进行插件管理的,插件的安装.查看.删除都可以用package co ...
- Hexo 主题配置 - NexT
hexo-theme-next 主题配置大全,图文并茂,持续更新中. 1 安装 NexT 主题 参考 hexo-theme-next 主题官网 1.1 下载 NexT 主题 建议你使用 克隆最新版本 ...
- 《Cisco/H3C交换机配置与管理完全手册(第2版)》终稿封面和目录
无数网友一直殷切期待和关注的<Cisco/H3C交换机配置与管理完全手册>(第2版)一书即将于本月底正式上市了.到时对于真实读者,写书评后可以参加全额返款的抽奖活动,加入我的微博(本博客首 ...
- tomcat6 配置web管理端访问权限
配置tomcat 管理端登陆 /apache-tomcat-6.0.35/conf/tomcat-users.xml 配置文件,使用时需要把注释去掉<!-- <!-- <role r ...
- linux下apache服务器的配置和管理(启动、重启、中断服务)
2019独角兽企业重金招聘Python工程师标准>>> linux下apache服务器的配置和管理 一.两个重要目录: Apache有两个重要的目录: 1.配置目录/etc/http ...
最新文章
- 8月份Github上最热门的Python开源项目
- Android中edittext一些属性设置
- 开放搜索开源兼容版,支持Elasticsearch做搜索召回引擎
- 我的设计模式之旅(4)——生成器(建造者)模式Builder
- css菜单下拉菜单_在CSS中创建下拉菜单
- Powerbi实现帕累托分析
- power designer数据流图_鲲云公开课 | 三分钟带你了解数据流架构
- “很多人,到了一定年龄才明白:不要与任何人走的太近”你怎么看?
- JavaScript里的父、子节点操作源码解析
- ASP.NET自动回发的内幕
- Struts2-Value Stack浅析
- 多模态关键任务与应用综述(从表示到融合,从协同学习到关键技术梳理)
- Oracle解决锁表语句与批量生成解锁语句
- C4D教程大纲(R23)+笔记
- 文件预览-使用SecretID和SecretKey进行腾讯云cos桶文件预览(word、ppt等)
- 《天涯明月刀》服务器端3D引擎设计与开发
- 03.计算机网络--- 网络层、IP协议、手工配置IP地址
- Nginx配置基础-proxy_pass
- 软件开发沉思录读书笔记
- 苹果开发者账号注册申请流程
热门文章
- 【视频教程】帝国CMS制作网站系列教程13—全站全文搜索及模板
- YUV图像格式进行的ALPHA BLEND操作
- Eclipse+多国语言包插件+Tomcat插件+Lomboz插件+Myeclipse插件的安装与配置
- 什么样的触达方式,会员会喜欢?
- A类 B类 AB类 D类 K类功放简单对比
- 清华同方的计算机硬件设置,清华同方笔记本电脑开机进入BIOS的几种方法(F2)附bios设置图文方...
- 使用 SQL Server 创建唯一索引
- 国内的车牌识别算法怎样选择
- 利用Calendar类打印日历
- 乐忧商城项目总结-4