Shiro集成spring--权限管理

Shiro与Spring Security类似是都是用作权限管理,它们的控制粒度都能达到按钮级别。其实在正常使用中已经足够了,那么本次主要记录一下Shiro和Spring的集成,具体如下:


Shiro是通过过滤器的方式,对访问路径拦截,并进行权限的控制。那么首先,需要在web.xml中设置一个过滤器


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

以上我们看到一个代理过滤器shiroFilter,这个shiroFilter实在spring中使用bean的形式定义的

      
	      
	      
	    
	     
	      
	      
	      
	      
	      
	      
	      
	      
	      
	          
				 /toLogin**=anon       
	             /login**=anon       
				 /unauth**=anon       
	             /mycode.jpg=anon  
	             /static/** = anon
	             /common/** = anon
	             /service/** = anon
	             /** = authc        
	          
	    
	
以上每个参数注释已经很详细,就不再多舌。shiroFilter的配置还需要一个安全处理的核心securityManager,具体配置如下:

    
        
        
    
 
    
        
    
以上安全管理器还需要一个realm,其实这个类中主要是用来进行登录验证及权限验证的。这个需要我们自己独立实现,继承与AuthorizingRealm,主要实现两个方法

//登录验证

protected AuthenticationInfo doGetAuthenticationInfo

//权限验证

protected AuthorizationInfo doGetAuthorizationInfo


当然除了以上配置实现外,还需要配置:

  
	
	
	    
	
LifecycleBeanPostProcessor用于在实现了Initializable接口的Shiro bean初始化时调用Initializable接口回调,在实现了Destroyable接口的Shiro bean销毁时调用 Destroyable接口回调。如UserRealm就实现了Initializable,而DefaultSecurityManager实现了Destroyable。具体可以查看它们的继承关系。



在登录代码中我们还需要手动调用login方法,执行登录操作。具体如下:

UsernamePasswordToken token = new UsernamePasswordToken(userName,password,rememberMe);
				SecurityUtils.getSubject().login(token);


可能参考博文:http://jinnianshilongnian.iteye.com/blog/2029717/



你可能感兴趣的:(shiro)