【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>
时间: 2024-10-06 07:22:01

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

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

[SSO单点系列](1):CAS4.0 环境的搭建 一.概述 今天开始写CAS相关的第一篇文章,这篇文章主要是关于CAS环境的搭配,提供给刚刚接触CAS的一个入门指南,并演示一个CAS的最简单的实例 二.环境要求 博主的环境如下: win8.1 64 bit JDK1.7  下载地址点我 Tomcat-8.0.15  下载地址点我 cas-server-4.0.0 .cas-client-3.3.3  下载地址点我  (官网速度比较慢,提供百度网盘) tomcat服务器需要部署三个,我分别命名为

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

上一篇 [SSO单点系列](1):CAS环境的搭建介绍了CAS最简单环境的搭建,以及一个例子用来讲解CAS的一个最基础的用法. 今天主要是介绍如何对CAS登录页进行个性化定制.    一.开始 下图是CAS默认的登录界面,可以看到这界面是肯定不能直接用在生产环境上的,因为上面的有许多英文,简单来说,这是一个对客户非常不友好的界面.那么怎么修改它呢?我们接着往下看! ps:这个页面在工程中的地址为 cas\WEB-INF\view\jsp\default\ui\casLoginView.jsp,大

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

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: Java代码   /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) pu

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

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

(十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

(十三) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)

上一篇我根据框架中OAuth2.0的使用总结,画了SSO单点登录之OAuth2.0 登出流程,今天我们看一下根据用户token获取yoghurt信息的流程: /** * 根据token获取用户信息 * @param accessToken * @return * @throws Exception */ @RequestMapping(value = "/user/token/{accesstoken}", method = RequestMethod.GET) public Resp

【SSO单点系列】:CAS4.0 CAS整合SpringMVC+MyBatis实现数据库校验(04)

一.准备所需jar包 cas\WEB-INF\lib中加入 c3p0-0.9.1.2.jar包.mysql-connector-java-5.1.21.jar包和cas-server-support-jdbc-4.0.0.jar包. c3p0的jar包和mysql驱动的jar包可以在maven上拉下来, cas-server-support-jdbc-4.0.0.jar 这个jar包可以在cas-server-4.0.0\modules目录下找到 二.Cas-Server(服务端)自定义验证规则