CAS 过期时间设置无效


这是由于CAS本身的一个Bug引起的 。


分析:

定时器 org.jasig.cas.ticket.registry.support.DefaultTicketRegistryCleaner

核心代码如下:

            final List ticketsToRemove = new ArrayList();
            final Collection ticketsInCache;
            ticketsInCache = this.ticketRegistry.getTickets();
            System.out.println("hello ! size:"+ticketsInCache.size() );
            for (final Ticket ticket : ticketsInCache) {
            	System.out.println(ticket.isExpired());
                if (ticket.isExpired()) {
                    ticketsToRemove.add(ticket);
                }
            }

所以  登入校验判断的时候 也要 从 this.ticketRegistry.getTickets() 里面获取。

	
		
	

	
		
	

	
		
	

在  org.jasig.cas.web.flow.InitialFlowSetupAction的方法中 ticketGrantingTicketId 是从cookiet中获取的,应改为从ticketRegistry中获取。


        context.getFlowScope().put("ticketGrantingTicketId", ticketRegistry.getTicket(this.ticketGrantingTicketCookieGenerator.retrieveCookieValue(request)));
        context.getFlowScope().put("warnCookieValue",Boolean.valueOf(this.


在 cas-servlet.xml 中,修改配置 如下:


	





你可能感兴趣的:(CAS)