天天看點

shiro(4)-銀行示例

在官方的示例中,有一個aspectj的示例,這個是一個銀行的示例,簡單的做了一下修改,示範一下其中幾個方法的使用過程。

看以下幾個類,包括賬戶資訊,轉賬資訊,以及一些異常處理程式,還包括一個業務操作類

Account賬戶資訊類

AccountNotFoundException,賬号不存在異常

AccountTransaction,賬号轉入與轉出

BankServerRunner,銀行服務運作

 BankService,銀行服務接口

BankServiceException,銀行服務異常

InactiveAccountException,存入賬戶異常

NotEnoughFundsException,賬戶不足異常

SecureBankService,安全銀行的服務類,處理各種銀行的業務

在配置檔案中配置了三組賬戶

使用者 root 密碼secret 角色admin

使用者 sally 密碼1234 角色superviser

使用者 dan密碼123 角色user

角色資訊包括

包括種種操作的權限配置設定

使用junit測試

加載對應的ini中的資訊,在每次運作之前

登入使用者的操作方法

給張三建立賬戶,并且檢查賬戶的情況

看列印出來的資訊

建立張三的使用者資訊并且檢查張三的賬戶的情況。

第二個測試

建立賬戶李四并且存入250到賬戶裡,使用者有建立和操作的權限,是以可以操作

運作後的結果

建立賬戶王五并且存入多筆款項

一共存入三筆,最後得到的資料的總和為435

看日志打出來的資訊

建立賬戶賈六并且取款,因為賬戶為空是以會抛出異常

看執行的結果

得到期望的NotEnoughFundsException,運作通過

然後建立賬戶周七,先存入50,然後取100,結果得到的與面相同,餘額不足異常

看列印出的日志資訊

再測試先存後取,先存入500,後取100,最後得到的結果為400

看列印出的結果

存入一筆取多筆

檢視列印的日志資訊

存多少取多少

關閉賬戶餘額為0的賬戶,普通使用者沒有權限,是以需要轉到另外一個角色的賬戶進行操作

檢視列印出來的日志資訊

建立使用者并且存入350,然後對這個使用者進行關閉操作

建立使用者并且關閉正活動的賬戶

其中判斷權限使用的是annocation的方式

@RequiresPermissions("bankAccount:create") 是否有使用者建立權限

@RequiresPermissions("bankAccount:read") 讀權限

@RequiresPermissions("bankAccount:operate") 操作權限

@RequiresPermissions("bankAccount:close") 關閉權限

根據以上幾個标簽就可以得到對應的權限資訊