原创 shiro subject源碼分析

核心接口Subject,通常我們會將Subject對象理解爲一個用戶,同樣的它也有可能是一個三方程序,它是一個抽象的概念,可以理解爲任何與系統交互的“東西”都是Subject。可以進行登錄,退出,權限驗證,獲取用戶信息,session.

原创 shiro 登錄驗證身份過程分析

//步驟1:首先利用工具類獲取Subject,沒有獲取到則創建一個新的Subject Subject currentUser = SecurityUtils.getSubject(); //步驟2:在默認實現類DelegatingSub

原创 wireshark抓包分析FTP

簡單通過抓把分析下ftp從登陸步驟 首先找到網上一個公用的ftp地址進行抓包測試,這裏採用地址(瑞典Umeå universitet于默奧大學公共FTP服務器):ftp://ftp.acc.umu.se/ 打開wireshark,條件過

原创 操作系統-特權級

       在linux系統中特權級別分爲0,1,2,3一共四個界別,0最大 ,3最小。一般內核代碼運行在0特權級,驅動 ,虛擬機等運行在1,2特權級,而我們自己寫的程序一般運行在3特權級,也就是最低級別。        我們自己寫的程

原创 shiro 用戶認證源碼分析

定義接口獲取用戶用戶名密碼 AuthenticationToken,在 子類實現:   Authenticator接口用來認證用戶,可以看出參數就是AutenticationToken,從中獲取用戶名密碼進行驗證 Authent

原创 tomcat中文亂碼

1:程序中中文亂碼 修改bin/catalina.bat,添加一行配置 set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8 2:如果啓

原创 shiro session分析 part 1

1:首先session監聽類,默認一個空實現,方便我們選擇只重寫我們需要的方法 : 2:session接口定義 3:session代理類,簡單的代理session的各種操作   4:SimpleSession不僅實現了session接

原创 shiro securityManager分析

接口SecurityManager,繼承了接口Authorizer,SessionManager,Authenticator 接口CachingSecurityManager增加了緩存和日誌功能和設置 EventBus The Ev

原创 shiro 驗證角色,權限過程分析

首先說明,在shiro中,實際應用中在方法上添加 RequiresPermissions 或者 RequiresRoles 註解會觸發aop執行驗證當前Subject是否有相關權限或者角色的代碼。 RequiresPermissions 

原创 shiro 權限認證源碼分析

權限認證關於註解的源碼分析請參考我的另一篇文章 https://blog.csdn.net/u013995395/article/details/90718739 權限認證默認實現類:ModularRealmAuthorizer,可以設置

原创 shiro @RequiresPermissions設計與 實現

本篇主要以@RequiresPermissions 註解爲例,講解shiro中如何設計與實現 首先定義註解 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(Reten

原创 shiro realm源碼分析

核心接口Realm,主要功能是獲取要驗證的用戶用心,可以從數據庫,文件等數據源 抽象類CachingRealm,增加了設置緩存功能。 AuthenticationRealm 1:驗證緩存,子類實現cache.put(cacheKey,

原创 chapter1 使用shiro登錄驗證

首先我們先整合springboot和shiro,在pom中引入 <dependency> <groupId>org.apache.shiro</groupId> <arti

原创 shiro與springboot整合原理

首先在我們之前的chapter1文章中講到shiro配置類中有這個方法: @Bean public ShiroFilterFactoryBean shirFilter(SecurityManager securityMan

原创 spring接口BeanFactory層級分析

1:spring中的根bean工廠接口爲BeanFactory,定義了對bean的基本操作,接口定義如下: public interface BeanFactory { Object getBean(String name) t