Shiro許可權管理

2021-10-11 01:53:59 字數 2595 閱讀 4979

1.sql語句許可權表

create table role

(   id          int         not null auto_increment comment 'id',

name        varchar(20) not null comment '角色名稱',

description varchar(200) comment '描述',

primary key (id)

) engine = innodb comment '角色';

​create table permission

(   id         int          not null auto_increment comment 'id',

name       varchar(20)  not null comment '許可權名稱',

expression varchar(100) not null comment '許可權表示式',

parent_id  int comment '上一級許可權id',

primary key (id)

) engine = innodb comment '許可權';

​create table user_role

(   id      int not null auto_increment comment 'id',

user_id int not null comment '使用者id',

role_id int not null comment '角色id',

primary key (id)

) engine = innodb comment '使用者-角色';

​create table role_permission

(   id            int not null auto_increment comment 'id',

role_id       int not null comment '角色id',

permission_id int not null comment '許可權id',

primary key (id)

) engine = innodb comment '角色-許可權';

2.匯入jar包

1.4.1

org.apache.shiro

shiro-spring

1.4.1

3.建立乙個myrealm 類 繼承authorizingrealm抽象類

@autowired

@autowired

@autowired

​   /**

* 授權(查詢使用者是否擁有某些許可權和角色)

** @param principals

* @return

*/@override

protected authorizationinfo dogetauthorizationinfo(principalcollection principals)

}info.setroles(roles);

info.setstringpermissions(prems);

return info;

}​​​   /**

* 認證(登陸)

** @param token

* @return

* @throws authenticationexception

*/@override

protected authenticationinfo dogetauthenticationinfo(authenticationtoken token) throws authenticationexception

​       // 獲取密碼

string password = user.getpassword();

// 獲取鹽

string salt = user.getsalt();

return new ******authenticationinfo(user, password, bytesource.util.bytes(salt), this.getname());

}

4.實現authenticationinfo和authorizationinfo方法

authenticationinfo:這個方法是認證(登入)

authorizationinfo:這個方法是授權(許可權,角色)

5.把這個物件給spring管理

6.如果想使用註解在controller使用就使用這個註解@requiresroles(「admin」)

7.在使用註解之前一定要注意將開啟shiro註解,!!!(而且)

8.原因是

我們知道shiro的註解授權是基於spring的aop實現的。在程式啟動時會自動掃瞄作了註解的class,當發現註解時,就自動注入授權**實現。也就是說,要注入授權控制

Shiro許可權管理

shiro許可權管理 一.許可權管理的四張核心的表關係 使用者表使用者 角色 關係表 角色表角色 許可權 關係表 許可權表角色 選單 關係表 選單表二.許可權的控制項 粗粒度配置檔案配置 細粒度通過註解實現 三.了解認證和授權的流程 前端發起登入請求 訪問shiro的subject subject....

Shiro許可權管理(二) 認證

時隔這麼久終於有時間更新了,今天和大家分享一下shiro的原理。我認為無論是shiro也好,還是其他安全框架也好,其功能主要就分為三部分 認證 授權 加密。下面我們來詳細說明shiro具體是如何實現的。講原理當然離不開結構圖,我們先來看一下shiro的整體結構。由shiro的結構圖我們可以看出shi...

Shiro登入及許可權管理

github位址 使用shiro springboot mybatis實現簡單的登入和許可權管理,使用自定義許可權註解實現許可權管理。資料庫表user 欄位名示例id1 username 1password 1資料庫表auth 欄位名示例id1 username 1role user permiss...