【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验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户 ...
随机推荐
- .Net6 使用 Ocelot + Consul 看这篇就够了
前言 卯兔敲门,新的一年,祝大家前'兔'似锦!希望大家假后还能找到公司的大门 O(∩_∩)O !书接上文,我们使用了 Consul实现了服务注册与发现,对Consul不熟悉的同学可以先看看.这篇文章我 ...
- mov eax,dword ptr[0x00aff834] 和 lea eax,[0x00aff834]区别
mov eax,dword ptr[0x00aff834] 和 lea eax,[0x00aff834]区别 mov eax,[内存]是将内存的值赋值给eax,而lea是直接将地址值赋值给eax 因此 ...
- 云服务器安装Mysql之后,设置可以进行远程连接,Duplicaticate wntry '%-root' for key 'PRIMARY
云服务器安装Mysql之后,设置可以进行远程连接 1.首先连接mysql mysql -u root -p 2.MySql5版本 GRANT ALL ON *.* TO root@'%' IDENTI ...
- Python装饰器实例讲解(二)
Python装饰器实例讲解(二) Python装饰器实例讲解(一) 你最好去看下第一篇,虽然也不是紧密的链接在一起 参考B站码农高天的视频,大家喜欢看视频可以跳转忽略本文:https://www.bi ...
- CSS特效集锦(9款 , 总有一款是你喜欢的)
主要是: 穿越时空特效, 图片放大镜, 3D相册, 立方体相册, 昼夜更替特效, 飘雪, 七彩雨, 签名生成器, 水波纹动画等 代码部分 <section> <div class=& ...
- websocket-sharp 实现websocket
第一步,使用VS创建一个应用程序 第二步,添加引用 websocket-sharp DLL文件,或者NuGet程序包中添加 第三部,创建Laputa 类 using WebSocketSharp; u ...
- VS 管理控制台提示ScriptHalted
一.结论 出现该问题是因为PowerShell 版本低的原因,按以下步骤操作即可 二.解决方案 1.下载最新PowerShell 安装程序包,根据系统找对应版本x86还是x64 https://www ...
- JZOJ 1078. 【GDOI2006】The Kth Element
\(\text{Problem}\) 给定一个整数序列 \(a[1..N]\),定义 \(sum[i][j]=a[i]+a[i+1]+...+a[j]\),将所有的 \(sum[i][j]\) 从小到 ...
- Vulhub 漏洞学习之:Couchdb
Vulhub 漏洞学习之:Couchdb 目录 Vulhub 漏洞学习之:Couchdb 1 Couchdb 垂直权限绕过漏洞(CVE-2017-12635) 1.1 漏洞利用过程 2 Couchdb ...
- JavaSE基础 (全网最全知识点)
背景介绍 java运行机理(即使编译型语言,又是解释型语言) 编译型语言(如:c语言) 源代码需要通过预编译形成可执行文件,再由系统执行该文件形成可识别的二进制文件 解释型语言 边执行边转换.源代码先 ...