java cas logout无效_CAS logout 解决方案

java cas logout无效_CAS logout 解决方案一 常识了解 1 GBK 包含 GB2312 即如果通过 GB2312 编码后可以通过 GBK 解码 反之可能不成立 2 java nio charset Charset defaultChars 获得平台默认字符编码 3 getBytes 是通过平台默认字符集进行编码 二 中文乱码出现在学习任何一门技术时 CASlogout 的时候 默认是会重定向到 casserver 端的 lo

一、常识了解   1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码; 3.getBytes() 是通过平台默认字符集进行编码;   二、中文乱码出现   在学习任何一门技术时

CAS logout的时候,默认是会重定向到cas server端的logout页面。

现在的需求是重定向到登录页面。

在应用中, 我还遇到直接ogout(只做清空session, cookie), 而不去重定向到cas 的logout页面,这种情况下:

如果不关闭浏览器, 直接再次输入Application的URL, 会绕过CAS认证,照常登入。

吃问题困扰了几天,看了一下CASserver端的代码,恍然大悟:

LogoutController有一个开关变量:

Java代码

private boolean followServiceRedirects;

并有一段逻辑: 项目要求struts2和servlet能够共存,就是struts的请求发给struts处理,servlet的请求发给servlet处理。目前web.xml文件应该是类似于如下的配置:  struts2org.apache.struts2.dispatcher.ng.filte

Java代码

if (this.followServiceRedirects && service != null) {

return new ModelAndView(new RedirectView(service));

}

service是个啥:

Java代码

final String service = request.getParameter(“service”);

如果在logout的url后面加上你要重定向的那个页面, 就可以自定义登出页面了:

所以,我的方案就出来了:

在cas-servlet.xml中,设置logoutController的followServiceRedirects=true

Xml代码

p:centralAuthenticationService-ref=”centralAuthenticationService”

p:logoutView=”casLogoutView”

p:warnCookieGenerator-ref=”warnCookieGenerator”

p:ticketGrantingTicketCookieGenerator-ref=”ticketGrantingTicketCookieGenerator”

p:followServiceRedirects=”true”/>

application在登出的时候,除了清空session和cookie外, 重定向的url加上:

Java代码

var apphostname = window.location.hostname

var appport = window.location.port;

var callbackurl=’?service=http%3A%2F%2F’+apphostname +’%3A’+appport + ‘%2Fapplication’ Java代码

window.location = logoutUrl+ callbackurl;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209210.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午9:46
下一篇 2026年3月19日 上午9:47


相关推荐

  • jQuery 焦点图,图像文件js档

    jQuery 焦点图,图像文件js档

    2022年1月13日
    42
  • 流程引擎概念_虚幻引擎4

    流程引擎概念_虚幻引擎4目录一、流程定义二、查询流程定义三、ID与版本四、挂起流程定义五、流程实例六、执行七、活动实例八、任务与任务定义本部分说明了流程引擎的概念一、流程定义流程定义定义了流程的结构。CamundaBPM使用BPMN2.0作为主要的建模语言,可以将BPMN2.0XML格式部署到流程引擎中。二、查询流程定义List<ProcessDefinition>processDefinitions=repositoryService.createP

    2022年10月20日
    7
  • 链表的基本操作_简单链表

    链表的基本操作_简单链表链表的基本操作这里写目录标题链表的基本操作一:单链表的基础知识二:单链表的建立头插法尾插法三:单链表的遍历四:单链表结点数目判断五:单链表的插入链表头插入任意结点插入链表尾部插入六:单链表的删除七:单链表的查询一:单链表的基础知识为什么需要链表?我们在使用数组存放数据是非常方便,但是由于数组的长度是固定的,所以当存储不同的元素数量时,就很容易出现问题。如果向数组中添加的数量大于数组大小时候,信息无法完全被保存。所以我们需要另一种存储方式来存储数据,其中存储的元素的个数不受限制。这种存储方式就是链

    2025年6月20日
    5
  • ArrayList扩容机制源码分析

    ArrayList扩容机制源码分析ArrayList 扩容源码分析

    2026年3月16日
    3
  • 操作系统进程调度实验报告心得_进程的管理和控制实验报告

    操作系统进程调度实验报告心得_进程的管理和控制实验报告题目要求一、 实验目的多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。二、 实验内容1. 优先权法、轮转法简化假设1) 进程为计算型的(无I/O)2) 进程状态:ready、running、finish3) 进程需要的CPU时间以时间片为单位确定2. 算法描述1) 优先权法——动态优先权当前运行进程用完时间片后,其优先权减去一个常数。2) 轮转法三、

    2026年4月16日
    5
  • 四、AI玩具/陪伴机器人豆包大模型为智能玩具提供语音交互、情感陪伴等AI能力。股

    四、AI玩具/陪伴机器人豆包大模型为智能玩具提供语音交互、情感陪伴等AI能力。股

    2026年3月12日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号