天天看点

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") 关闭权限

根据以上几个标签就可以得到对应的权限信息