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...