spring mvc+Mybatis整合shiro 第一章 整体配置

前段时间研究了一下shiro,因为看不懂英文所以学习过程颇为曲折,后来整合shiro想写一个sso结果这段时间又写不下去了只好来写写博客了。

最初学shiro是在百度搜教程,说实话那些教程除了开涛写的其它人写的确实不怎么样,而且开涛的教程也不是特别详细的那种,所以我在这给大家写一个整合后的完整教程。

shiro的设计思想我在这就不多说了,实话我说只明白一小半甚至一小半都没有,要说思想开涛的博客的前几章讲的很好,所以我在这不重复了这里我只讲些实用的东西能让你快速上手的。

先上个Spring mvc的配置文件,具体都是什么配置请自行百度这个教程太多了我在这就不讲了。

 




	Spring公共配置 

	
	
		
		
		
			
				
				classpath*:/application.properties
				classpath*:/config/shiro.properties
			
		
	
	
	
	

	
	
	 	 
	

	
	
		
		
		
		
		

		
		
		
		
		
	

	
	

	
	
		
		
	
	
	
    
        
    
    

	
    
        
    
    
	
		
	
	
	

下面这个是重点shiro的spring配置:

 

 



	
	
	
	
		
		
		
		
	
	
	
	
	
		
		
		
		
		
		
	
	
		
	
	
	
	
	
	
	
		
		
		
		
		
		
			
				
					
				
				
					
				
				
					
				
			
		

	
	
	

从上到下依次给大家讲解。

 

1、shiroDbRealm:这是一个自定义的realm,realm的作用我的理解就是用来给用户登陆和设置权限的。具体讲解请看第二章。

2、securityManager:安全管理器,从它的注入属性来看,他管理着用户的realm、session、cache,我的理解是可以将他看作是一个中心,所有的操作都要经过它的调度。

 

3、sessionValidationScheduler:他是shiro自己的一个session管理器,从源码可以看出它其实就是一个线程,这个东西不需要手动注入,这里列出来是因为我觉得默认30分钟一次的刷新频率太低了,当初想通过这种方式来改掉他的默认时间,大家从我只写了一行代码可以看出结果当然是失败的。

4、sessionManager:这是对session所有操作的一个管理类。

5、sharsession:用来设置当前会话的cookie设置,属性包括cookie所的属性。

6、shiroCacheMnanager:chche管理器,这里面是一个单机版的管理器,如果是集群据说要重写sessionDAO这个组件,具体的没有研究过,过后再研究一下。

7、chainDefinitionSectionMetaSource:这个是我自己写资源加载器,大家都知道shiro的标准配置方式是在xml里面配置资源地址而在xml里面配置地址会有很多的不便,经过研究最终写出了通过项目启动时访问数据库来加载地址的方式。具体的实现方式在后面会讲到。

8、shiroFilter:这是shiro拦截器的入口位置,用来初始化所有需要的组件及参数。

9、lifecycleBeanPostProcessor:说实话不知道这是干嘛的,看注释意思是使用注解来控制权限。

下面是web.xml的一个设置:

 


  member
  
    contextConfigLocation
    classpath*:/applicationContext*.xml
  
  
    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
    
      forceEncoding
      true
    
  
  
    encodingFilter
    /*
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
    org.springframework.web.util.IntrospectorCleanupListener
  
  
    shiroFilter
    org.springframework.web.filter.DelegatingFilterProxy
    
      targetFilterLifecycle
      true
    
  
  
    shiroFilter
    /*
  
  
    appServlet
    org.springframework.web.servlet.DispatcherServlet
    
      contextConfigLocation
      classpath*:/springmvc-servlet.xml
    
    1
  
  
    appServlet
    /
  

前半部分是对编码的一个设置,中间部分是shiro的设置,在这里要说一下shiro拦截器的加载方法与普通拦截器不一样具体原理没明白但有一点filter-name必须要与xml里面定义的bean id一样否则会报错。在shiro的后面就是spring自己的配置了跟正常的一样没什么好说的。

 

在这要说一句,shiro里面接管了session默认的应该是30分钟,如果在这里设置的话应该就不起作用了需要在shiro的配置项里面去设置globalSessionTimeOut。
 

 

你可能感兴趣的:(shiro)