跟我學shiro——realm之資源權限(4)

使用ini的方式完成受權

  1. 編寫ini 文件
    在ini文件中用戶、角色、權限的配置規則是:「用戶名=密碼,角色1,角色2...」 「角色=權限1,權限2...」,首先根據用戶名找角色,再根據角色找權限,角色是權限集合。

權限字符串的規則是:「資源標識符:操做:資源實例標識符」,意思是對哪一個資源的哪一個實例具備什麼操做,「:」是資源/操做/實例的分割符,權限字符串也能夠使用通配符。
例子:
用戶建立權限: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
  1. 測試結果
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

自定義relam方式完成受權

相關文章
相關標籤/搜索