CAS logout的一个解决方案

本文介绍如何在 CAS (Central Authentication Service) 中自定义登出流程,包括重定向到特定页面及解决未完全登出的问题。通过配置 `followServiceRedirects` 属性,并在登出 URL 中指定 `service` 参数,可以实现从 CAS 登出后直接返回到应用的指定页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

 

 

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

LogoutController有一个开关变量:

 

private boolean followServiceRedirects;
 

 

并有一段逻辑:

 

        if (this.followServiceRedirects && service != null) {
            return new ModelAndView(new RedirectView(service));
        }

 

 service是个啥:

 

 final String service = request.getParameter("service");

 

 

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

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

 

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

 

	<bean id="logoutController" class="org.jasig.cas.web.LogoutController"
		p:centralAuthenticationService-ref="centralAuthenticationService"
		p:logoutView="casLogoutView"
		p:warnCookieGenerator-ref="warnCookieGenerator"
		p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator" 
		p:followServiceRedirects="true"/>

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

 

						var apphostname = window.location.hostname
						var appport = window.location.port;

						var callbackurl='?service=http%3A%2F%2F'+apphostname +'%3A'+appport + '%2Fapplication'
window.location = logoutUrl+ callbackurl;
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值