1. 程式人生 > 其它 >shiro中常用的物件和方法

shiro中常用的物件和方法

一.配置類中常用的物件和方法

  1.ShiroFilterFactoryBean()物件:通過建立的該物件呼叫setSecurityManager方法去關聯DefaultWebSecurityManager物件

  2.DefaultWebSecurityManager()物件:通過建立的該物件呼叫setRealm方法關聯建立的Realm物件,其中Realm物件時自己定義的一個Realm類

  3.setSecurityManager()方法:通過建立ShiroFilterFactoryBean物件呼叫該方法,設定安全管理器,其引數為DefaultWebSecurityManager物件,可以從建立的ShiroFilterFactoryBean方法中傳參獲取

  4.setFilterChainDefinitionMap()方法:通過建立ShiroFilterFactoryBean物件呼叫該方法,設定shiro內建的過濾器,其引數為一個map集合

  5.setLoginUrl()方法:通過建立ShiroFilterFactoryBean物件呼叫該方法,設定如果沒有登入使用者時要跳轉的頁面的地址

  6.setRealm()方法:通過建立的DefaultWebSecurityManager物件呼叫該方法,設定Realm物件,其引數為Realm物件

  7.程式碼樣例:

package com.xiaoma.config;

import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.LinkedHashMap; import java.util.Map; /** * Author:xiaoma * FileName:MyShiroConfig * Data:2022/5/25 21:34
*/ //這裡要做三件事,建立ShiroFilterFactoryBean,建立DefaultWebSecurityManager,建立realm物件,這三件事要倒著做 @Configuration public class MyShiroConfig { //建立ShiroFilterFactoryBean,關聯DefaultWebSecurityManager @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean(@Qualifier("DWSM") DefaultWebSecurityManager defaultWebSecurityManager){ ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean(); //設定安全管理器 filterFactoryBean.setSecurityManager(defaultWebSecurityManager); /* * 新增shiro內建的過濾器 * anon:無需認證就可以訪問 * authc:必須認證才可以訪問 * user:必須擁有記住我功能才能使用 * perms:擁有對某個資源的許可權才可以訪問 * role:擁有某個角色許可權才可以訪問 * */ Map<String, String> filterMap = new LinkedHashMap<>(); filterMap.put("/user/add","authc"); filterMap.put("/user/update","authc"); //他需要一個map集合 filterFactoryBean.setFilterChainDefinitionMap(filterMap); //如果沒有登入使用者,要跳轉到登入頁 filterFactoryBean.setLoginUrl("/toLogin"); return filterFactoryBean; } //建立DefaultWebSecurityManager,通過@Qualifier註解關聯realm物件 /* * @Qualifier註解中的引數 * 如果要關聯的方法的bean沒有name屬性,那麼就是該方法名,預設也是這種方式 * 如果bean註解有name屬性,那麼@Qualifier註解中的引數就是bean註解的name屬性 * */ @Bean(name = "DWSM") public DefaultWebSecurityManager defaultWebSecurityManager(@Qualifier("userRealm") UserRealm userRealm){ DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(userRealm); return securityManager; } //建立realm物件,這個物件要自定義,繼承AuthorizingRealm,並重寫其中的方法 @Bean public UserRealm userRealm(){ return new UserRealm(); } }

二..Realm類中常用的物件和方法