1. 程式人生 > >002 使用固定信息模擬認證過程--理解認證的過程

002 使用固定信息模擬認證過程--理解認證的過程

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 使用固定信息模擬認證過程--理解認證的過程