一、登出实现返回自定义页面

服务端修改

cas-servlet.xml

<bean id="logoutAction" class="org.jasig.cas.web.flow.LogoutAction"
p:servicesManager-ref="servicesManager"
p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/>

些处p:followServiceRedirects="false"改true

客户端

方法一

Web.xml 添加

<!-- 填写退出的URL -->
<context-param>
<param-name>casServerLogoutUrl</param-name>
<param-value>http://www.myCas.com:18080/logout</param-value>
</context-param>
<!--单点退出配置-->

新增logout.Jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<%
session.invalidate();
response.sendRedirect(application
.getInitParameter("casServerLogoutUrl")
+ "?service=http://ciat.padx.cn:8080/globle-login.action");
%>
</body>
</html>

调用:

<a href="${ctx}/logout.jsp" class="exit"><i class="icon global-exit"></i>安全退出</a>

方法二(CMS项目)

<a href="http://www.myCas.com:18080/logout?service=http://www.myapp5.com:8088/jeeadmin/jeecms/logout.do?returnUrl=login.do" target="_top" id="logout" onclick="return confirm('<@s.m "global.confirm.logout"/>');"><@s.m "global.admin.logout"/></a>

二、密码不正确返回自定义页面

客户端需要将 返回页面传入loginurl

login-webflow.xml

1、Handle里添加第一个参数

2、添加返回页面参数

 1 <action-state id="handleAuthenticationFailure">
2 <evaluate expression="authenticationExceptionHandler.handle(flowRequestContext,currentEvent.attributes.error, messageContext)" />
3 <transition on="AccountDisabledException" to="casAccountDisabledView"/>
4 <transition on="AccountLockedException" to="casAccountLockedView"/>
5 <transition on="CredentialExpiredException" to="casExpiredPassView"/>
6 <transition on="InvalidLoginLocationException" to="casBadWorkstationView"/>
7 <transition on="InvalidLoginTimeException" to="casBadHoursView"/>
8 <transition on="FailedLoginException" to="generateLoginTicket"/>
9 <transition on="AccountNotFoundException" to="generateLoginTicket"/>
10 <transition on="UNKNOWN" to="generateLoginTicket"/>
11 <transition on="cust" to="failureLoginView"/>
12 </action-state>

新增

<end-state id="failureLoginView" view="failureLoginView" />

AuthenticationException.java

添加方法

public String handle(final RequestContext context,final AuthenticationException e, final MessageContext messageContext) {
HttpServletRequest request = WebUtils.getHttpServletRequest(context);
String isFrame=context.getRequestParameters().get("isFrame");
String loginUrl=context.getRequestParameters().get("loginUrl");
request.setAttribute("tologinUrl", loginUrl);
request.setAttribute("isFrame", isFrame);
String error="UNKNOWN";
if (e != null) {
for (final Class<? extends Exception> kind : this.errors) {
for (final Class<? extends Exception> handlerError : e.getHandlerErrors().values()) {
if (handlerError != null && handlerError.equals(kind)) {
final String messageCode = this.messageBundlePrefix + handlerError.getSimpleName();
messageContext.addMessage(new MessageBuilder().error().code(messageCode).build());
error = handlerError.getSimpleName();
break;
}
} }
}
request.setAttribute("error", error);
return "cust"; }

default_views.properties

failureLoginView.(class)=org.springframework.web.servlet.view.JstlView
failureLoginView.url=/WEB-INF/view/jsp/default/ui/failureLogin.jsp

新增failureLogin.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<html>
<head> </head>
<body>
<script type="text/javascript">
<%
Boolean isFrame = (Boolean)request.getAttribute("isFrame");
if(isFrame!=null && isFrame ){%>
parent.location.replace('${tologinUrl}?error=${error}')
<%} else{%>
location.replace('${tologinUrl}?error=${error}')
<%
}
%>
</script>
</body>
</html>

【SSO单点系列】(3):CAS4.0 之自定义返回登出页面的更多相关文章

  1. 【SSO单点系列】(2):CAS4.0 登录页的个性化定制

    上一篇 [SSO单点系列](1):CAS环境的搭建介绍了CAS最简单环境的搭建,以及一个例子用来讲解CAS的一个最基础的用法. 今天主要是介绍如何对CAS登录页进行个性化定制.    一.开始 下图是 ...

  2. Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

    上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * ...

  3. 【SSO单点系列】(1):CAS4.0 环境的搭建

    一.概述 今天开始写CAS相关的第一篇文章,这篇文章主要是关于CAS环境的搭配,提供给刚刚接触CAS的一个入门指南,并演示一个CAS的最简单的实例 二.环境要求 博主的环境如下: win8.1 64 ...

  4. (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  5. Spring Cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  6. Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)

    上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程: /** * 用户注销 * @param accessT ...

  7. 【SSO单点系列】(3):CAS4.0 登录页验证码的添加

    2016.08.23 更新 注意:这个教程只适合4.0版本的,4.1以及以上的版本的已经不试用了, 后面几篇有人提到过 源码网盘链接更新了下 : 链接: http://pan.baidu.com/s/ ...

  8. 【SSO单点系列】(7):CAS4.0 SERVER通过数据库方式认证用户

    在前几篇中有简单介绍服务端的认证方式,默认的是直接在 deployerConfigContext.xml 文件中 一个叫做 primaryAuthenticationHandler 的bean中配置. ...

  9. 【SSO单点系列】(6):CAS4.0 单点流程序列图(中文版)以及相关术语解释(TGT、ST、PGT、PT、PGTIOU)

    CAS 相关的内容好久没写了,可能下周会继续更新一些内容吧. 在上一篇中的单点流程序列图由于是从官网直接下载来的,上面都是英文,可能有的朋友看不懂,因此修改成中文的. PS:只修改了一个,第二个图明天 ...

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

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

随机推荐

  1. try catch finally,try里有return,finally还执行么?

    执行,并且finally的执行早于try里面的return: 结论: 1.不管有木有出现异常,finally块中代码都会执行: 2.当try和catch中有return时,finally仍然会执行: ...

  2. 大数据实时多维OLAP分析数据库Apache Druid入门分享-下

    @ 目录 架构 核心架构 外部依赖 核心内容 roll-up预聚合 列式存储 Datasource和Segments 位图索引 数据摄取 查询 集群部署 部署规划 前置条件 MySQL配置 HDFS配 ...

  3. 微机原理与系统设计笔记3 | 8086cpu指令系统

    打算整理汇编语言与接口微机这方面的学习记录.本部分介绍8086的指令系统(一些与程序设计密切相关的如子程序调用指令放在下一部分). 参考资料 西电<微机原理与系统设计>周佳社 西交< ...

  4. vue学习笔记(四)---- 品牌管理案例

    一.导入相关包 <script src="../lib/vue2.6.10.min.js"></script> <script src=". ...

  5. Quartz帮助类

    #region 帮助类 public class QuarztHelper { #region 字段 /// <summary> /// 调度器 /// </summary> ...

  6. 【模板】倍增求LCA

    题目链接 一. 时间戳法(本质上是dfs序) #include<cstdio> using namespace std; const int NN = 5e5+8; int n,m,s; ...

  7. Nginx10 Lua入门 + openresty

    1 Idea中创建Lua项目 lua官网:https://www.lua.org/ 1.1 添加插件,重启idea 1.2 创建项目 file-New Project 1.3 创建lua文件 1.4 ...

  8. Vue08 数据代理

    1 说明 所谓"数据代理",是指 通过一个对象代理对另一个对象的属性进行读或写操作. 2 简单示例 2.1 代码 let obj = {x:100}; let obj2 = {y: ...

  9. P23_列表渲染

    列表渲染 wx:for 通过 wx:for 可以根据指定的数组,循环渲染重复的组件结构,语法示例如下: 默认情况下,当前循环项的索引用 index 表示:当前循环项用 item 表示. 手动指定索引和 ...

  10. imax6开发版_交叉编译

    下载 arm-linux-gnueabihf-gcc编译器 sudo apt install gcc-arm-linux-gnueabihf #安装完成后使用如下命令查看版本 arm-linux-gn ...