什麼事shiro: 一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。使用Shiro的易於理解的API,可以快速、輕鬆地獲得任何應用程序,從最小的移動應用程序到最大的網絡和企業應用程序。
核心組件:Subject, SecurityManager 和 Realms.
Subject:即“當前操作用戶”。Subject這一概念並不僅僅指人
SecurityManager:它是Shiro框架的核心,管理所有用戶的安全操作
Realm:Shiro與應用安全數據間的“橋樑”或者“連接器”。當對用戶執行認證(登錄)和授權(訪問控制)驗證時,Shiro會從應用配置的Realm中查找用戶及其權限信息。
Shiro內置了可以連接大量安全數據源(又名目錄)的Realm,如LDAP、關係數據庫(JDBC)、類似INI的文本配置資源以及屬性文件等。如果缺省的Realm不能滿足需求,你還可以插入代表自定義數據源的自己的Realm實現。
怎麼用:
對象創建
public class ShiroFilterFactoryBean implements FactoryBean, BeanPostProcessor {
private static transient final Logger log = LoggerFactory.getLogger(ShiroFilterFactoryBean.class);
private SecurityManager securityManager;//安全管理器
private Map<String, Filter> filters;//過濾集合
private Map<String, String> filterChainDefinitionMap; //urlPathExpression_to_comma-delimited-filter-chain-definition
private String loginUrl;//登錄鏈接
private String successUrl;//登錄成功鏈接
private String unauthorizedUrl;//不成功鏈接,其實走到這裏已經可以確定這個過濾器不符合項目要求了
private AbstractShiroFilter instance;
public ShiroFilterFactoryBean() {
this.filters = new LinkedHashMap<String, Filter>();
this.filterChainDefinitionMap = new LinkedHashMap<String, String>(); //order matters!
}
關於多對多關聯查詢:先得到set遍歷取出所要的對象,再由對象屬性具體查詢
關於shiroConfig下實例化securityManager總是自動導出java.lang.securityManager:老老實實寫全名