权限字符串的规则是:“资源标识符:操做:资源实例标识符”,意思是对哪一个资源的哪一个实例具备什么操做,“:”是资源/操做/实例的分割符,权限字符串也能够使用通配符。
例子:
用户建立权限:user:create,或user:create:
用户修改实例001的权限:user:update:001
用户实例001的全部权限:user:*:001测试
通常而已,咱们操做只须要关注前面两节:
资源:操做 :
: : 全部资源的全部操做权限--->adminspa
[users] zhangsan=222,role1,role2 lisi=888,role2 [roles] role1=user:create,user:update role2=user:creat,user:delete role3=user:creat
public void realmRole() { //获取SecurityManager的实例 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:relmRole.ini"); SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "222"); subject.login(token); log.info("登陆是否成功!"+subject.isAuthenticated()); log.info("验证是否有role1权限"+subject.hasRole("role1")); log.info("验证是否有role1,role2权限"+subject.hasAllRoles(Arrays.asList("role1","role2"))); log.info("验证是否有role1,role2权限"+Arrays.toString(subject.hasRoles(Arrays.asList("role1","role2")))); log.info("登陆是否成功!"+subject.isAuthenticated()); log.info("验证是否对user资源delete操做"+subject.isPermitted("user:delete")); } 2018-10-08 11:04:23.989 INFO 168 --- [ main] c.tuyue.SpringbootshiroApplicationTests : 登陆是否成功!true 2018-10-08 11:04:23.990 INFO 168 --- [ main] c.tuyue.SpringbootshiroApplicationTests : 验证是否有role1权限true 2018-10-08 11:04:23.990 INFO 168 --- [ main] c.tuyue.SpringbootshiroApplicationTests : 验证是否有role1,role2权限true 2018-10-08 11:04:23.990 INFO 168 --- [ main] c.tuyue.SpringbootshiroApplicationTests : 验证是否有role1,role2权限[true, true] 2018-10-08 11:04:23.990 INFO 168 --- [ main] c.tuyue.SpringbootshiroApplicationTests : 登陆是否成功!true 2018-10-08 11:04:23.990 INFO 168 --- [ main] c.tuyue.SpringbootshiroApplicationTests : 验证是否对user资源delete操做true