落雨 cas 单点登录

SSO单点登录系列4:cas-server登录页面自定义修改过程,全新DIY。

目标:
  

下面是正文:

打开cas的默认首页,映入眼帘的是满眼的中文and英文混杂体,作为一名合格的用户,我表示很不开心。

于是,打开Nodepad++,寻找C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui\casLoginView.jsp这个页面,开始了我的改造之旅,作为一名合格的分享ser,我表示全程都会转化为文档,方便以后的兄弟更好的研究比这个更高深的东西,这种低能的玩意,我来就行。

废话很多,开搞。

1.找到我们要删除的html代码

ok 我们查到了,原来这个languages是存在于一个叫做div id = list-language 节点下

2.我们删掉它,然后刷新一下。当然做这些改动之前记得备份好自己的jsp,俗话说嘛,写程序,难免有失手的时候。一个备份在手,省却N多重构。

刷新后:

3.下面开始干掉上面的那个HTTPS error提示,因为我的程序嫌证书太麻烦,所以使用的是改造版的http验证,不会的去参阅我的前几篇博客。

删掉如下代码

  1. <span style="font-family:Microsoft YaHei;font-size:14px;"><c:if test="${not pageContext.request.secure}">
  2. <div id="msg" class="errors">
  3. <h2>Non-secure Connection</h2>
  4. <p>You are currently accessing CAS over a non-secure connection.  Single Sign On WILL NOT WORK.  In order to have single sign on work, you MUST log in over HTTPS.</p>
  5. </div>
  6. </c:if></span>
截图:

刷新之后,

4.好干净的说。

5.随后,我们添加一个轮播大图展示模块,以显示我们公司或个人网站的用户体验度。

奥对了,如果jsp里面你修改成了中文,那么可能页面会乱码,我的解决办法是把此jsp用记事本打开,然后另存为UTF-8的格式刷新页面即可无乱码。

然后我们找到C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui\includes\bottom.jsp这个文件,由于cas使用的jQuery版本是1.4而且还是调用的谷歌服务器上的js文件,我们把它屏蔽掉,加入本地的js即可,cas页面修改需要注意路径问题,基本上加个标签就ok了。

6.然后找到C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui\casLoginView.jsp这个dom节点:

<div class="sidebar-content">

<div>

在这个div之后。我们添加我们自己的div就可以啦~~

记住一点:js文件引入语句和css文件引用位置的放入位置:

  1. css文件放在C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui\includes\top.jsp的head标签里面

  2. js文件放在top.jsp或者casLoginView.jsp下均可,但是路径不是相对路径而是spring标签那种:

  3. 示例如下,这样写才行用<c:url>标签

  1. <span style="font-family:Microsoft YaHei;font-size:14px;"><script src="<c:url value="/js/jquery.slides.js" />"></script></span>

4.css文件这样写:

  1. <span style="font-family:Microsoft YaHei;font-size:14px;"><link type="text/css" rel="stylesheet" href="<c:url value="/css/main.css" />" />
  2. <link type="text/css" rel="stylesheet" href="<c:url value="/css/font-awesome.min.css" />" /></span>

ok,基本上就是这个样子了。我是用的jquery轮播插件:http://www.slidesjs.com/

这里面有官方示例,你们自己玩吧。我把自己的代码贴出来,对比着照葫芦画瓢吧。最重要的是要理解,然后下节会讲cas登录页面的验证码功能。

C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui\casLoginView.jsp

  1. <span style="font-family:Microsoft YaHei;font-size:14px;"><%--
  2. Licensed to Jasig under one or more contributor license
  3. agreements. See the NOTICE file distributed with this work
  4. for additional information regarding copyright ownership.
  5. Jasig licenses this file to you under the Apache License,
  6. Version 2.0 (the "License"); you may not use this file
  7. except in compliance with the License.  You may obtain a
  8. copy of the License at the following location:
  9. http://www.apache.org/licenses/LICENSE-2.0
  10. Unless required by applicable law or agreed to in writing,
  11. software distributed under the License is distributed on an
  12. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  13. KIND, either express or implied.  See the License for the
  14. specific language governing permissions and limitations
  15. under the License.
  16. --%>
  17. <jsp:directive.include file="includes/top.jsp" />
  18. <div class="box fl-panel" id="login">
  19. <form:form method="post" id="fm1" cssClass="fm-v clearfix" commandName="${commandName}" htmlEscape="true">
  20. <form:errors path="*" id="msg" cssClass="errors" element="div" />
  21. <!-- <spring:message code="screen.welcome.welcome" /> -->
  22. <h2><spring:message code="screen.welcome.instructions" /></h2>
  23. <div class="row fl-controls-left">
  24. <label for="username" class="fl-label"><spring:message code="screen.welcome.label.netid" /></label>
  25. <c:if test="${not empty sessionScope.openIdLocalId}">
  26. <strong>${sessionScope.openIdLocalId}</strong>
  27. <input type="hidden" id="username" name="username" value="${sessionScope.openIdLocalId}" />
  28. </c:if>
  29. <c:if test="${empty sessionScope.openIdLocalId}">
  30. <spring:message code="screen.welcome.label.netid.accesskey" var="userNameAccessKey" />
  31. <form:input cssClass="required" cssErrorClass="error" id="username" size="25" tabindex="1" accesskey="${userNameAccessKey}" path="username" autocomplete="false" htmlEscape="true" />
  32. </c:if>
  33. </div>
  34. <div class="row fl-controls-left">
  35. <label for="password" class="fl-label"><spring:message code="screen.welcome.label.password" /></label>
  36. <%--
  37. NOTE: Certain browsers will offer the option of caching passwords for a user.  There is a non-standard attribute,
  38. "autocomplete" that when set to "off" will tell certain browsers not to prompt to cache credentials.  For more
  39. information, see the following web page:
  40. http://www.geocities.com/technofundo/tech/web/ie_autocomplete.html
  41. --%>
  42. <spring:message code="screen.welcome.label.password.accesskey" var="passwordAccessKey" />
  43. <form:password cssClass="required" cssErrorClass="error" id="password" size="25" tabindex="2" path="password"  accesskey="${passwordAccessKey}" htmlEscape="true" autocomplete="off" />
  44. </div>
  45. <div class="row check">
  46. <input id="warn" name="warn" value="true" tabindex="3" accesskey="<spring:message code="screen.welcome.label.warn.accesskey" />" type="checkbox" />
  47. <label for="warn"><spring:message code="screen.welcome.label.warn" /></label>
  48. </div>
  49. <div class="row btn-row">
  50. <input type="hidden" name="lt" value="${loginTicket}" />
  51. <input type="hidden" name="execution" value="${flowExecutionKey}" />
  52. <input type="hidden" name="_eventId" value="submit" />
  53. <input class="btn-submit" name="submit" accesskey="l" value="<spring:message code="screen.welcome.button.login" />" tabindex="4" type="submit" />
  54. <input class="btn-reset" name="reset" accesskey="c" value="<spring:message code="screen.welcome.button.clear" />" tabindex="5" type="reset" />
  55. </div>
  56. </form:form>
  57. </div>
  58. <div id="sidebar">
  59. <div class="sidebar-content">
  60. <div>
  61. <!-- SlidesJS Required: Start Slides -->
  62. <!-- The container is used to define the width of the slideshow -->
  63. <div class="container">
  64. <div id="slides">
  65. <img src="<c:url value="/img/example-slide-1.jpg" />" >
  66. <img src="<c:url value="/img/example-slide-2.jpg" />" >
  67. <img src="<c:url value="/img/example-slide-3.jpg" />" >
  68. <img src="<c:url value="/img/example-slide-4.jpg" />" >
  69. <a href="#" class="slidesjs-previous slidesjs-navigation"><i class="icon-chevron-left icon-large"></i></a>
  70. <a href="#" class="slidesjs-next slidesjs-navigation"><i class="icon-chevron-right icon-large"></i></a>
  71. </div>
  72. </div>
  73. <!-- End SlidesJS Required: Start Slides -->
  74. <script src="<c:url value="/js/jquery.slides.js" />"></script>
  75. <!-- SlidesJS Required: Initialize SlidesJS with a jQuery doc ready -->
  76. <script>
  77. $(function() {
  78. var a =  $('#slides');
  79. a.slidesjs({
  80. width: 870,
  81. height: 480,
  82. navigation: false,
  83. pagination: {
  84. effect: "fade"
  85. },
  86. effect: {
  87. fade: {
  88. speed: 400
  89. }
  90. }, play: {
  91. auto: true,
  92. effect: "fade",
  93. interval: 4000,
  94. // swap: true
  95. }
  96. });
  97. });
  98. </script>
  99. <!-- End SlidesJS Required -->
  100. </div>
  101. </div>
  102. </div>
  103. <jsp:directive.include file="includes/bottom.jsp" /></span>
C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui\includes\top.jsp
  1. <span style="font-family:Microsoft YaHei;font-size:14px;"><%--
  2. Licensed to Jasig under one or more contributor license
  3. agreements. See the NOTICE file distributed with this work
  4. for additional information regarding copyright ownership.
  5. Jasig licenses this file to you under the Apache License,
  6. Version 2.0 (the "License"); you may not use this file
  7. except in compliance with the License.  You may obtain a
  8. copy of the License at the following location:
  9. http://www.apache.org/licenses/LICENSE-2.0
  10. Unless required by applicable law or agreed to in writing,
  11. software distributed under the License is distributed on an
  12. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  13. KIND, either express or implied.  See the License for the
  14. specific language governing permissions and limitations
  15. under the License.
  16. --%>
  17. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  18. <%@ page session="true" %>
  19. <%@ page pageEncoding="UTF-8" %>
  20. <%@ page contentType="text/html; charset=UTF-8" %>
  21. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  22. <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
  23. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
  24. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  25. <spring:theme code="mobile.custom.css.file" var="mobileCss" text="" />
  26. <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  27. <head>
  28. <title>CAS – Central Authentication Service</title>
  29. <c:if test="${not empty requestScope['isMobile'] and not empty mobileCss}">
  30. <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
  31. <meta name="apple-mobile-web-app-capable" content="yes" />
  32. <meta name="apple-mobile-web-app-status-bar-style" content="black" />
  33. <!--<link type="text/css" rel="stylesheet" media="screen" href="<c:url value="/css/fss-framework-1.1.2.css" />" />
  34. <link type="text/css" rel="stylesheet" href="<c:url value="/css/fss-mobile-${requestScope['browserType']}-layout.css" />" />
  35. <link type="text/css" rel="stylesheet" href="${mobileCss}" />-->
  36. </c:if>
  37. <spring:theme code="standard.custom.css.file" var="customCssFile" />
  38. <link type="text/css" rel="stylesheet" href="<c:url value="${customCssFile}" />" />
  39. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  40. <link rel="icon" href="<c:url value="/favicon.ico" />" type="image/x-icon" />
  41. <script src="<c:url value="/js/jquery-1.9.1.min.js" />"></script>
  42. <!-- CSS for slidesjs.com example
  43. <link type="text/css" rel="stylesheet" href="<c:url value="/css/example.css" />" />
  44. Central Authentication Service (CAS)
  45. <!-- End CSS for slidesjs.com example -->
  46. <link type="text/css" rel="stylesheet" href="<c:url value="/css/main.css" />" />
  47. <link type="text/css" rel="stylesheet" href="<c:url value="/css/font-awesome.min.css" />" />
  48. </head>
  49. <body id="cas" class="fl-theme-iphone">
  50. <div class="flc-screenNavigator-view-container">
  51. <div class="fl-screenNavigator-view">
  52. <div id="header" class="flc-screenNavigator-navbar fl-navbar fl-table">
  53. <h1 id="company-name">123</h1>
  54. <h1 id="app-name" class="fl-table-cell" style="background: none repeat scroll 0% 0% rgb(255, 255, 221);color:#000">落雨 </h1>
  55. </div>
  56. <div id="content" class="fl-screenNavigator-scroll-container"></span>

main.css

  1. <span style="font-family:Microsoft YaHei;font-size:14px;"><!-- SlidesJS Optional: If you'd like to use this design -->
  2. body {
  3. }
  4. #slides,
  5. #slides2,
  6. #slides3 {
  7. display: none;
  8. margin-bottom:50px;
  9. }
  10. a{
  11. text-decoration: none;
  12. }
  13. .slidesjs-navigation {
  14. margin-top:3px;
  15. }
  16. .slidesjs-previous {
  17. margin-right: 5px;
  18. float: left;
  19. }
  20. .slidesjs-next {
  21. margin-right: 5px;
  22. float: left;
  23. }
  24. .slidesjs-pagination {
  25. margin: 6px 0 0;
  26. float: right;
  27. list-style: none;
  28. }
  29. .slidesjs-pagination li {
  30. float: left;
  31. margin: 0 1px;
  32. }
  33. .slidesjs-pagination li a {
  34. display: block;
  35. width: 13px;
  36. height: 0;
  37. padding-top: 13px;
  38. background-image: url(../img/pagination.png);
  39. background-position: 0 0;
  40. float: left;
  41. overflow: hidden;
  42. }
  43. .slidesjs-pagination li a.active,
  44. .slidesjs-pagination li a:hover.active {
  45. background-position: 0 -13px
  46. }
  47. .slidesjs-pagination li a:hover {
  48. background-position: 0 -26px
  49. }
  50. a:link,
  51. a:visited {
  52. color: #333
  53. }
  54. a:hover,
  55. a:active {
  56. color: #9e2020
  57. }
  58. .navbar {
  59. overflow: hidden
  60. }
  61. <!-- End SlidesJS Optional-->
  62. <!-- SlidesJS Required: These styles are required if you'd like a responsive slideshow -->
  63. #slides {
  64. display: none
  65. }
  66. .container {
  67. margin: 0 auto
  68. }
  69. /* For tablets & smart phones */
  70. @media (max-width: 767px) {
  71. body {
  72. padding-left: 20px;
  73. padding-right: 20px;
  74. }
  75. .container {
  76. width: auto
  77. }
  78. }
  79. /* For smartphones */
  80. @media (max-width: 480px) {
  81. .container {
  82. width: auto
  83. }
  84. }
  85. /* For smaller displays like laptops */
  86. @media (min-width: 768px) and (max-width: 979px) {
  87. .container {
  88. width: 724px
  89. }
  90. }
  91. /* For larger displays */
  92. @media (min-width: 1200px) {
  93. .container {
  94. width: 1170px
  95. }
  96. }</span>

C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui\includes\bottom.jsp

  1. <%--
  2. Licensed to Jasig under one or more contributor license
  3. agreements. See the NOTICE file distributed with this work
  4. for additional information regarding copyright ownership.
  5. Jasig licenses this file to you under the Apache License,
  6. Version 2.0 (the "License"); you may not use this file
  7. except in compliance with the License.  You may obtain a
  8. copy of the License at the following location:
  9. http://www.apache.org/licenses/LICENSE-2.0
  10. Unless required by applicable law or agreed to in writing,
  11. software distributed under the License is distributed on an
  12. "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  13. KIND, either express or implied.  See the License for the
  14. specific language governing permissions and limitations
  15. under the License.
  16. --%>
  17. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  18. </div>
  19. <div id="footer" class="fl-panel fl-note fl-bevel-white fl-font-size-80">
  20. <a id="jasig" href="http://www.jasig.org" title="go to Jasig home page"></a>
  21. <div id="copyright">
  22. <p>Copyright © 2005 - 2012 Jasig, Inc. All rights reserved.</p>
  23. <p>Powered by <a href="http://www.jasig.org/cas">Jasig Central Authentication Service <%=org.jasig.cas.CasVersion.getVersion()%></a></p>
  24. </div>
  25. </div>
  26. </div>
  27. </div>
  28. <!--script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script-->
  29. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script >
  30. <script type="text/javascript" src="<c:url value="/js/cas.js" />"></script>
  31. </body>
  32. </html>

附 pad 预览图:

2013年4月27日21:49:55

SSO单点登录系列4:cas-server登录页面自定义修改过程(jsp页面修改)的更多相关文章

  1. cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析

    转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...

  2. SSO单点登录系列1:cas客户端源码分析cas-client-java-2.1.1.jar

    落雨 cas 单点登录 希望能给以后来研究cas的兄弟留下一点思路,也算是研究了两天的成果,外国人的代码写的很晦涩,翻译下来也没有时间继续跟进,所以有错误的还请大家跟帖和我讨论,qq 39426378 ...

  3. SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析

    落雨 cas 单点登录 一.用户第一次访问web1应用. ps:上图少画了一条线,那一条线,应该再返回来一条,然后再到server端,画少了一步...谢谢提醒.而且,重定向肯定是从浏览器过去的.我写的 ...

  4. 单点登录(七)-----实战-----cas server去掉https验证

    我们在搭建cas中已经说过如果不搭建https证书体系的需要去掉https的验证: 单点登录(二)----实战------简单搭建CAS---测试认证方式搭建CAS 因为cas4.2以上的代码做了一些 ...

  5. cas+tomcat+shiro实现单点登录-2-部署cas server到tomcat

    目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...

  6. 单点登录(三)-----实战-----cas server 源码下载和部署

    我们在上一篇文章中使用的是4.0版本的cas,4.0版本的有发布好的war包可以直接使用,那如果我们要使用更新的版本怎么办呢? 就需要下载源码自己编辑打包了. 步骤如下: 版本选择 我们在cas的gi ...

  7. cas sso单点登录系列4_cas-server登录页面自定义修改过程(jsp页面修改)

    转:http://blog.csdn.net/ae6623/article/details/8861065 SSO单点登录系列4:cas-server登录页面自定义修改过程,全新DIY. 目标:    ...

  8. 【SSO单点系列】(4):CAS4.0 SERVER登录后用户信息的返回

    接着上一篇,在上一篇中我们描述了怎么在CAS SERVER登录页上添加验证码,并进行登录.一旦CAS SERVER验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户 ...

  9. SSO单点登录Spring-Security & CAS使用手册

    1.1概述 1.1.1单点登录介绍 单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可 ...

随机推荐

  1. 《R语言实战》读书笔记--第三章 图形初阶(二)

    3.4添加文本.自定义坐标轴和图例 很多作图函数可以设置坐标轴和文本标注.比如标题.副标题.坐标轴标签.坐标轴范围等.需要注意的是并不是所有的绘图函数都有上述的参数,需要进行验证.可以将一些默认的参数 ...

  2. 关于js的addEventListener 和一些常用事件

    element.addEventListener(<event-name>, <callback>, <use-capture>);document.addEven ...

  3. CodeForces - 789B B. Masha and geometric depression---(水坑 分类讨论)

    CodeForces - 789B 当时题意理解的有点偏差,一直wa在了14组.是q等于0的时候,b1的绝对值大于l的时候,当b1的绝对值大于l的时候就应该直接终端掉,不应该管后面的0的. 题意告诉你 ...

  4. win7 iis 7.0 碰到 503错误,找到的解决方案

    Service Unavailable HTTP Error 503. The service is unavailable. 今天要布署一个网站,在自己的电脑上,结果碰到服务器503错误,找应用程序 ...

  5. 转 Join的实现原理及优化思路

    前言 前面我们已经了解了MySQLQueryOptimizer的工作原理,学习了Query优化的基本原则和思路,理解了索引选择的技巧,这一节我们将围绕Query语句中使用非常频繁,且随时可能存在性能隐 ...

  6. 戴文的Linux内核专题:02 源代码【转】

    转自:https://linux.cn/article-2190-1.html?pr 在下载并解压内核源代码后,用户可以看到许多文件夹和文件.尝试去找一个特定的文件或许是一个挑战.谢天谢地,源代码以一 ...

  7. linux缺页异常处理--用户空间【转】

    转自:http://blog.csdn.net/vanbreaker/article/details/7870769 版权声明:本文为博主原创文章,未经博主允许不得转载. 用户空间的缺页异常可以分为两 ...

  8. python 二分法查找思考理解小白向け

    首先说一下二分法查找的思路.这是面向小白的课程,大佬请让步谢谢 给定一个有序的序列(必须是排好序的)例如[1,2,3,4,5,6,7,8,9,10,20,30,400],然后我们查询一个元素出现的坐标 ...

  9. SQL Server中JOIN的用法

    JOIN 分为:内连接(INNER JOIN).外连接(OUTER JOIN).其中,外连接分为:左外连接(LEFT OUTER JOIN).右外连接(RIGHT OUTER JOIN).全外连接(F ...

  10. django返回响应对象

    Django的视图必须要返回一个HttpResponse对象(或者其子类对象),不能像flask一样直接返回字符串. Django: return HttpResponse("Hello&q ...