shiro spring简单应用

阅读更多

最近有个小项目,采用公司内部的安全认证架构的话太重,就采用shiro来集成了。
各种配置也是网上一顿摘抄,根据自身情况进行的修改

 

一、项目的认证需求:
1、登录/登出
2、用户/岗位/资源 权限配置
二、数据库表结构
shiro只负责认证等逻辑,权限相关的表还是需要自己设计
这里就复用我们以前项目的表结构,其他大部分字段都没有用
一共有5张表:(附件createTable.sql是几张表的建表及数据:mysql)
1、t_common_grade  岗位表 
2、t_common_gradetask 岗位资源表
3、t_common_task 资源表
4、t_common_user 用户表
5、t_common_usergrade 用户岗位表

 

三、集成web项目(SSH)

1、引入jar:shiro-all-1.2.4.jar及其相关依赖
2、web.xml配置
    在web.xml中增加拦截器:

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

 注意,如果项目没有什么特殊需求的话,该拦截器最好放在第一个位置

 

3、与spring集成的配置文件:applicationContext-shiro.xml 添加到spring总配置中

a:这个项目采用 shiro JdbcRealm配置方式

b:第28 - 33行是和数据库表相关的配置,主要就是获取用户、获取用户角色(岗位)、获取岗位权限(资源)

c:需要注意的是,如果数据库中用户的密码采用MD5加密的话,需要增加特殊配置,见下面的注释

    MD5加密可以采用shiro带的工具类Md5Hash:String passwd = new Md5Hash("yourPwd").toString();

d:第51 - 54行是具体的拦截策略 根据自己项目的实际情况进行配置

 


	
	  
	
	  
	  
    
     
    
       
          
          
          
          
          
          
      
    
      
      
          
          
      
      
          
          
          
        
          
          
          
          
          
              
                /login/*=anon 
                /bs/**=anon 	
                /layout/**=anon 
                /**=authc 
              
          
      

 4、登录Action

 

a:登录认证

  UsernamePasswordToken token = new UsernamePasswordToken("yourUserName",yourPassWord); 
  token.setRememberMe(true);  
  Subject subject = SecurityUtils.getSubject();
  if (subject.isAuthenticated()) {
//如果认证成功 .....
}else{
//如果认证失败
}

 b:登出

Subject subject = SecurityUtils.getSubject(); 
			subject.logout();

 5、前台界面权限配置

     可以通过等一堆标签达到粗颗粒或者精准的控制

 

 四、总结

 这里的配置只是shiro功能的一角,但是对于一个小项目来讲,够用了:不要为了技术而技术,需求应用才是最大的推动力

 

  • shiro-all-1.2.4.jar (540.8 KB)
  • 下载次数: 0
  • createTable.zip (1.3 KB)
  • 下载次数: 0

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