java cas logout无效_CAS logout 解决方案

一、常识了解   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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值