CAS和Spring-shiro结合实现单点登出功能

CAS既然有单点登录功能,那么自然有单点登出,意思就是其中一个子系统登出之后,其他所有系统都不能访问。

下面我要说的是CAS和Spring-shiro结合实现单点登出功能结合实现的单点登出功能

这是应用系统web.xml配置,这里要特别注意,登出校验的配置一定要写在Spring-shiro配置之前,否则会使单点登出不成功


	
	org.jasig.cas.client.session.SingleSignOutHttpSessionListener
	
	
	CAS Single Sign Out Filter
	org.jasig.cas.client.session.SingleSignOutFilter
	
	casServerUrlPrefix
	http://localhost:8081/cas/
	
	
	
	CAS Single Sign Out Filter
	/*
	


	
	
		shiroFilter
		org.springframework.web.filter.DelegatingFilterProxy
		
			targetFilterLifecycle
			true
		
	
	
		shiroFilter
		/*
	

        
	
	CAS Authentication Filter
	org.jasig.cas.client.authentication.AuthenticationFilter
	
	casServerLoginUrl
	http://localhost:8081/cas/login
	
	
	renew
	false
	
	
	gateway
	false
	
	
	serverName
	http://localhost:8888
	
	
	ignorePattern
	/statistic/*|/static/*|/js/*|/img/*|/views/*|/css/*|webservice/*|/cas/changeCenter/*
	
	


	
	CAS Validation Filter
	
	org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
	
	
	casServerUrlPrefix
	http://localhost:8081/cas
	
	
	serverName
	http://localhost:8888
	
	
	useSession
	true
	
	
	redirectAfterValidation
	true
	
	
	encoding
	UTF-8
	
	


	
	CAS HttpServletRequest Wrapper Filter
	
	org.jasig.cas.client.util.HttpServletRequestWrapperFilter
	
	
	
	CAS Assertion Thread Local Filter
	
	org.jasig.cas.client.util.AssertionThreadLocalFilter
	
	
	
	CAS Authentication Filter
	/*
	
	
	CAS Validation Filter
	/*
	
	
	CAS HttpServletRequest Wrapper Filter
	/*
	
	
	CAS Assertion Thread Local Filter
	/*
	

下面是Spring-shiro的配置文件


	
		
			
				/img/** = anon
				/static/** = anon
				/userfiles/** = anon
				${adminPath}/cas = cas
				${adminPath}/cas/controlCenter/** = cas
				${adminPath}/app/csWebappSso/** = user
				${adminPath}/login = authc
				${adminPath}/logout = logout
				${adminPath}/** = user
				/act/editor/** = user
				/ReportServer/** = user
			
		
	

	
		
	

	
	
		
        
        
		
		
			
				
				
				
			
		
		
			
		
	

	
	
		
		
	
	
	
		
	

	
	
		
		
			
				
				
			
		
		
		
	

	
	
		
		
			
		
	

	
	
		

		
		

		
		
		
		

		
		
	

	
	
		
	

	
	
	
	
	
	
		
		
		
	

	
	
	
	
	
		
	

	
	

	
	
		
	
	
		
	

注意了,这里shiro配置的是不使用servlet容器来管理session,而是自定义了shiro自己的会话管理,这样会导致意想不到的情况发生。再这样的配置下,cas server登出之后,并不能使子系统的session也注销掉,子系统还是可以正常的访问,单点登出功能并没有实现。要想实现单点登出功能,配置spring-shiro时不能自定义session管理器,必须使用servlet容器。那要怎样才能使用servlet容器呢?只要把我之前配置的注释掉就可以了,shiro在没有自定义回话管理器是会默认是用servlet的容器。


	
		

		
		

		
		
		
		

		
		
	

把这一个bean注释掉,然后把引用这个bean的地方也注释掉,就OK了。
















你可能感兴趣的:(cas单点登录)