spring 集成shiro 之 自定义过滤器

            最近一段时间,我一直在将shiro集成到我的一个项目中,用作认证和授权处理。

            shiro对我来说是个新东西,以下是我学习过的内容:

            http://shiro.apache.org/authorization.html

            http://www.cnblogs.com/skyme/archive/2011/09/11/2173760.html  系列

            http://www.infoq.com/cn/articles/apache-shiro

            http://kdboy.iteye.com/blog/1103794

           如果我那个地方没说明白,可以看这些。

  集成shiro,需要配置web.xml文件,spring的applicationContext.xml配置文件(当然,独立配置一个shiro.xml文件交给spring容器处理也是可以的)。

web.xml文件中的配置:


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

applicationContext.xml文件中的配置:

 
    
	
		
		
		
		
		  
              
                
              
          
		
			
			    /Flat-UI-master/**=anon
				/index.jsp* = anon
				/test.jsp*=anon
				/jsp/** = authc
	            /test/objT.do = sperm
			
		
	
	
    
		
	
    
    
     
     
     
          
          
       
 MonitorRealm.java 是自定义的realm,读取数据库的用户信息,和授权信息。

 PermissionsAuthorizationFilter.java 是自定义的过滤器,来实现自己需要的授权过滤方式。

public class MonitorRealm extends AuthorizingRealm{
	
	@Autowired
	private DAO dao;//这里自己需要什么就注入什么。  

	public MonitorRealm() {
		super();
	}
	
	/**
	 * 授权操作,决定那些角色可以使用那些资源
	 */
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection pc) {
		
		//TODO 访问授权信息
		return info;
	}

	/**
	 * 认证操作,判断一个请求是否被允许进入系统
	 */
	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
		
		//TODO 用户认证信息  
	        return info;  
	}

}
public class PermissionsAuthorizationFilter extends AuthorizationFilter {

    public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException {
    	 //自定义过滤器逻辑   
        return true;
    }
}
配置自定义过滤器的关键是配置文件中 的这几句
  
              
                
              
          
		
			
			...   
	            /test/objT.do = sperm
			
		
颜色相同的地方一定要一样,表示用某个过滤器过滤指定路径。因为这个我费了好长时间。

org.apache.shiro.spring.web.ShiroFilterFactoryBean   的作用是通过spring来初始化shiro的工作环境。如果一个请求进来,shiro的过滤器会先工作,过滤器会调用realm中的授权或认证的方法来获取授权或认证信息。



另外csdn 文章显示有bug.

我那个地方是黄色,到了页面就显示不出来。csdn蛋疼的紧啊!!!!!!!!!!!!!!chrome浏览器。

你可能感兴趣的:(java,webapp)