IniRealm是Shiro提供一种Realm实现。用户、角色、权限等信息集中在一个.ini文件那里。
文件名以.ini为后缀名表示采用的是IniRealmusers开始的标签说明开始定义用户认证信息。这里有两个用户,他们的用户名分别是tom、jer,密码都是123.tom的角色有admin、user,而jer只有user角色。roles开始的标签开始定义角色拥有的权限标识,admin角色有user:delete权限,user角色有user.update权限标识。
在编写完成这个Ini文件之后,下面开始测试。
需要Shiro-core、Junit、Slf4j三个jar包这次使用的是IniRealm实现类。在构建IniRealm时需要传入resourcePath来表示ini文件的路径。这个路径和你放置的Ini文件路径相关。我使用的是Idea开发工具,src包为source root,user.ini放置在src/test下,所以是classpath:test/user.ini。
同样的,我们显示的实例一个Token,在27行。然后在28行检查是否可以认证、在29行检查是否具有user角色,在30行检查是否具有权限。
在28行检查过程中,如果抛出org.apache.shiro.authc.UnknownAccountException。这表示不存在名为jer的账号。
在28行检查过程中,如果抛出org.apache.shiro.authc.IncorrectCredentialsException。这表示密码有误,Credentials意味资格证书。
在29行和30检查过程中,如果不具有相应的角色或权限,他们都抛出同样的异常org.apache.shiro.authz.UnauthorizedException。紧随异常类其后的异常信息会给出是不具有相应的权限还是角色。
网友评论