1. 程式人生 > >apache shiro 與 encache

apache shiro 與 encache

  1. 在BOS專案中應用shiro框架進行認證

第一步:引入shiro框架相關的jar

第二步:在web.xml中配置spring框架提供的用於整合shiro框架的過濾器

啟動tomcat伺服器,丟擲異常:spring工廠中不存在一個名稱為“shiroFilter”的bean物件

 

第三步:在spring配置檔案中配置bean,id為shiroFilter

 

框架提供的過濾器:

 

第四步:配置安全管理器

 

第五步:修改UserAction中的login方法,使用shiro提供的方式進行認證操作

 

第六步:自定義realm,並注入給安全管理器

public class BOSRealm extends AuthorizingRealm{

         @Autowired

         private IUserDao userDao;

        

         //

認證方法

         protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {

                   System.out.println("realm

中的認證方法執行了。。。。");

                   UsernamePasswordToken mytoken = (UsernamePasswordToken)token;

                   String username = mytoken.getUsername();

                   //根據使用者名稱查詢資料庫中的密碼

                   User user = userDao.findUserByUserName(username);

                   if(user == null){

                            //使用者名稱不存在

                            return null;

                   }

                   //如果能查詢到,再由框架比對資料庫中查詢到的密碼和頁面提交的密碼是否一致

                   AuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPassword(), this.getName());

                   return info;

         }

 

         //授權方法

         protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {

                   // TODO Auto-generated method stub

                   return null;

         }

 

這裡注意  login方法先呼叫SecurityMangager,這裡的realm是自動被 SecurityManager 呼叫的。

 

這裡可以使用encache快取許可權資料,注入物件後就不用再管了。

 

  1. 使用ehcache快取許可權資料

ehcache是專門快取外掛,可以快取Java物件,提高系統性能。

  1. ehcache提供的jar包:

第一步:在pom.xml檔案中引入ehcache的依賴

第二步:在專案中提供ehcache的配置檔案

第三步:在spring配置檔案中配置快取管理器物件,並注入給安全管理器物件