【SSO单点系列】(3):CAS4.0 之自定义返回登出页面
一、登出实现返回自定义页面
服务端修改
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 之自定义返回登出页面的更多相关文章
- 【SSO单点系列】(2):CAS4.0 登录页的个性化定制
上一篇 [SSO单点系列](1):CAS环境的搭建介绍了CAS最简单环境的搭建,以及一个例子用来讲解CAS的一个最基础的用法. 今天主要是介绍如何对CAS登录页进行个性化定制. 一.开始 下图是 ...
- Spring Cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)
上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * ...
- 【SSO单点系列】(1):CAS4.0 环境的搭建
一.概述 今天开始写CAS相关的第一篇文章,这篇文章主要是关于CAS环境的搭配,提供给刚刚接触CAS的一个入门指南,并演示一个CAS的最简单的实例 二.环境要求 博主的环境如下: win8.1 64 ...
- (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)
上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...
- Spring Cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)
上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...
- Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程: /** * 用户注销 * @param accessT ...
- 【SSO单点系列】(3):CAS4.0 登录页验证码的添加
2016.08.23 更新 注意:这个教程只适合4.0版本的,4.1以及以上的版本的已经不试用了, 后面几篇有人提到过 源码网盘链接更新了下 : 链接: http://pan.baidu.com/s/ ...
- 【SSO单点系列】(7):CAS4.0 SERVER通过数据库方式认证用户
在前几篇中有简单介绍服务端的认证方式,默认的是直接在 deployerConfigContext.xml 文件中 一个叫做 primaryAuthenticationHandler 的bean中配置. ...
- 【SSO单点系列】(6):CAS4.0 单点流程序列图(中文版)以及相关术语解释(TGT、ST、PGT、PT、PGTIOU)
CAS 相关的内容好久没写了,可能下周会继续更新一些内容吧. 在上一篇中的单点流程序列图由于是从官网直接下载来的,上面都是英文,可能有的朋友看不懂,因此修改成中文的. PS:只修改了一个,第二个图明天 ...
- 【SSO单点系列】(4):CAS4.0 SERVER登录后用户信息的返回
接着上一篇,在上一篇中我们描述了怎么在CAS SERVER登录页上添加验证码,并进行登录.一旦CAS SERVER验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户 ...
随机推荐
- try catch finally,try里有return,finally还执行么?
执行,并且finally的执行早于try里面的return: 结论: 1.不管有木有出现异常,finally块中代码都会执行: 2.当try和catch中有return时,finally仍然会执行: ...
- 大数据实时多维OLAP分析数据库Apache Druid入门分享-下
@ 目录 架构 核心架构 外部依赖 核心内容 roll-up预聚合 列式存储 Datasource和Segments 位图索引 数据摄取 查询 集群部署 部署规划 前置条件 MySQL配置 HDFS配 ...
- 微机原理与系统设计笔记3 | 8086cpu指令系统
打算整理汇编语言与接口微机这方面的学习记录.本部分介绍8086的指令系统(一些与程序设计密切相关的如子程序调用指令放在下一部分). 参考资料 西电<微机原理与系统设计>周佳社 西交< ...
- vue学习笔记(四)---- 品牌管理案例
一.导入相关包 <script src="../lib/vue2.6.10.min.js"></script> <script src=". ...
- Quartz帮助类
#region 帮助类 public class QuarztHelper { #region 字段 /// <summary> /// 调度器 /// </summary> ...
- 【模板】倍增求LCA
题目链接 一. 时间戳法(本质上是dfs序) #include<cstdio> using namespace std; const int NN = 5e5+8; int n,m,s; ...
- Nginx10 Lua入门 + openresty
1 Idea中创建Lua项目 lua官网:https://www.lua.org/ 1.1 添加插件,重启idea 1.2 创建项目 file-New Project 1.3 创建lua文件 1.4 ...
- Vue08 数据代理
1 说明 所谓"数据代理",是指 通过一个对象代理对另一个对象的属性进行读或写操作. 2 简单示例 2.1 代码 let obj = {x:100}; let obj2 = {y: ...
- P23_列表渲染
列表渲染 wx:for 通过 wx:for 可以根据指定的数组,循环渲染重复的组件结构,语法示例如下: 默认情况下,当前循环项的索引用 index 表示:当前循环项用 item 表示. 手动指定索引和 ...
- imax6开发版_交叉编译
下载 arm-linux-gnueabihf-gcc编译器 sudo apt install gcc-arm-linux-gnueabihf #安装完成后使用如下命令查看版本 arm-linux-gn ...