002 使用固定信息模擬認證過程--理解認證的過程
阿新 • • 發佈:2018-04-04
ets 簡單 exceptio security gin 另一個 fin gpo cati
一 . 環境的搭建
我們使用maven來搭建工程.
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.0</version> </dependency>
本次使用的1.3.0的版本.
當然為了更好的shiro的運行過程,我們導入日誌組件包.
本次使用log4j來完成.
<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>
二 .在resource目錄下創建一個shiro.int文件
[users] zhangsan=123 trek=123
我們創建了兩個固定信息的用戶,一個是張三,密碼為123.另一個為trek,密碼為123.
三.實現認證
public class ShiroTest { private static final Logger logger = LoggerFactory.getLogger(ShiroTest.class); public static void main(String[] args) { //創建SecurityManager SecurityManager manager = new IniSecurityManagerFactory("classpath:shiro.ini").getInstance(); //將securityManager設置到當前環境下 SecurityUtils.setSecurityManager(manager);//獲取Subject對象 Subject subject = SecurityUtils.getSubject(); //創建token -- UsernamePasswordToken token = new UsernamePasswordToken("zhangsan","1233"); //實現登錄 try { subject.login(token); } catch (AuthenticationException e) { logger.error("認證失敗!!!"); return ; } logger.info("認證成功!!!"); } }
整個認證的過程非常簡單:
[1]前面的部分我們不需要關註.主要知道我們在設置SecurityManager就可以了.
[2]創建Subjcet對象,將賬號和密碼傳給login方法
[3]這個方法會出現異常,我們需要進行捕獲.這個異常的問題我們後面會重點關註的.
[4]如果沒有問題就說明我們的認證過程成功了.
AuthenticationException異常:
這個異常是shiro認證過程中的核心異常,shiro為我們創建了一些常用的異常.
如 : 賬號不存的異常,密碼不正確的異常,賬號被鎖定的異常等.
我們可以捕獲不同的異常實現自己的業務邏輯.
總結一下 :
shiro的認證我們就需要調用login方法,傳入token對象就可以了.
如果要自定義認證過程就需要重寫認證器和Realm.這個過程是我們下面需要講解的.
002 使用固定信息模擬認證過程--理解認證的過程