Cas服务端登录成功后跳转登录页修改

需求:cas服务端登录成功后始终显示登录界面,切换用户,刷新客户端请求切换相应用户信息。

从未接触过cas单点登录,在网上查了很多资料,主要分为以下步骤:

1.创建证书

2.配置服务端

3.配置客户端

4.修改服务端登录流程跳转等

5.测试


一、其中 1 2 3  可参考 http://blog.csdn.net/small_love/article/details/6664831,并检查证书是否和你创建的相符,记住不要创建多个:

keytool -v -list -keystore E:\work\jdk6\jre\lib\security\cacerts



因为我们的客户端公司已经封装过了,所以无需配置


二、修改cas服务端中登录流程成功跳转到登录页,修改login-webflow.xml 中判断service是否为空,为null 跳转的generateLoginTicket  (有2处判断, 2处都要修改)


     

     

测试,登录成功能跳转到登录页。此时发现一个bug,服务端切换用户时要输入两次,客户端才能正确显示用户信息,f12查看登录情况,发现第一登录并没有成功。302 found。此时很纠结 原因是日志神马的都没有。没有办法。把cas服务端文件夹都看了一遍发现 class 文件夹下有log4j.xml配置。果断修改日志打印。日志华丽丽打印出了一个错误Cannot create a session after the response has been committed.网上搜索,luckly 居然也有人碰到这个问题,解决方案

http://blog.csdn.net/wang725/article/details/50828758

直接把terminateWebSessionListener 注释了 ,修改cas-servlet.xml




再次测试 服务端切换用户正常,客户端怎么刷新切换用户失败。开始我以为是客户端的问题,仔细想不是客户端的问题。是切换时cookie并未删除前一用户的信息;主要修改org.jasig.cas.web.flow.AuthenticationViaFormAction.submit 方法,增加以下代码:


@NotNull
    private CentralAuthenticationService centralAuthenticationService;


 public void setTicketGrantingTicketCookieGenerator(
            final CookieRetrievingCookieGenerator ticketGrantingTicketCookieGenerator) {
            this.ticketGrantingTicketCookieGenerator = ticketGrantingTicketCookieGenerator;
    }


final HttpServletRequest request = WebUtils.getHttpServletRequest(context);
        final HttpServletResponse response = WebUtils.getHttpServletResponse(context);
        final String ticketGrantingTicketIdCo = this.ticketGrantingTicketCookieGenerator.retrieveCookieValue(request);
        if (ticketGrantingTicketIdCo != null) {
            this.centralAuthenticationService
                .destroyTicketGrantingTicket(ticketGrantingTicketIdCo);

            this.ticketGrantingTicketCookieGenerator.removeCookie(response);
            this.warnCookieGenerator.removeCookie(response);
        }






注意 CookieRetrievingCookieGenerator 注入,修改修改cas-servlet.xml,在authenticationViaFormAction中增加 p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator" 注入




重新启动,测试,服务端和客户端测试正常





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值