01【若依框架】 登入許可權
SysLoginController三大核心功能
一、登入並獲取token
SysLoginController-login介面
驗證登入資訊,獲取token
二、getInfo獲取登入人資訊
Role資訊
select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
r.status, r.del_flag, r.create_time, r.remark
from sys_role r
left join sys_user_role ur on ur.role_id = r.role_id
left join sys_user u on u.user_id = ur.user_id
left join sys_dept d on u.dept_id = d.dept_id
Menu資訊
getMenuPermission
admin- :?
select distinct m.perms
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role r on r.role_id = ur.role_id
where m.status = ‘0’ and r.status = ‘0’ and ur.user_id = #{userId}
注:選單的管理許可權說明,首先一個選單通常對應一個頁面,選單表需要有所擴充套件才能更加普適
1,每個選單對應了增刪改查基本許可權和其他特殊許可權,每個許可權對應了一個permission標識。
即選單表儲存了選單本身和選單代表頁面可能有的許可權,具體許可權標識的使用者則具備了對應的操作功能。
2. 選單通過parent_id構造樹形層級結構,通過compotn(“system/menu/index”)對映了前端VUE元件,從而生成了頁面路由
以上兩點是選單管理及頁面路由管理,功能許可權管理的精髓。另外,對於同一個選單不同的人可以檢視的資料範圍是不同的,這點後面會講解。
以上getInfo介面範圍了User,Roles,Menus三大資訊簇,裡面內容包羅永珍,要熟悉其中的結構
三、getRouters獲取路由資訊
這裡僅展示其中欄位資訊,children包含了所有子節點,結構與父節點相同,其效果就是介面左側的選單結構
component:告訴了前端頁面vue路由
其他資訊則包含了一個選單的所有屬性
{
“name”:“System”,
“path”:"/system",
“hidden”:false,
“redirect”:“noRedirect”,
“component”:“Layout”,
“alwaysShow”:true,
“meta”:{
“title”:“系統管理”,
“icon”:“system”,
“noCache”:false
},
“children”:[]
},路由資訊
這裡如何獲取一個人的所有樹狀選單利用遞迴實現,不做介紹可以參考
/**
- 根據父節點的ID獲取所有子節點
- @param list 分類表
- @param parentId 傳入的父節點ID
- @return String
*/
public List getChildPerms(List list, int parentId)
{
List returnList = new ArrayList();
for (Iterator iterator = list.iterator(); iterator.hasNext()?
{
SysMenu t = (SysMenu) iterator.next();
// 一、根據傳入的某個父節點ID,遍歷該父節點的所有子節點
if (t.getParentId() == parentId)
{
recursionFn(list, t);
returnList.add(t);
}
}
return returnList;
}
/**
- 遞迴列表
- @param list
- @param t
*/
private void recursionFn(List list, SysMenu t)
{
// 得到子節點列表
List childList = getChildList(list, t);
t.setChildren(childList);
for (SysMenu tChild : childList)
{
if (hasChild(list, tChild))
{
recursionFn(list, tChild);
}
}
}
/**
- 得到子節點列表
*/
private List getChildList(List list, SysMenu t)
{
List tlist = new ArrayList();
Iterator it = list.iterator();
while (it.hasNext())
{
SysMenu n = (SysMenu) it.next();
if (n.getParentId().longValue() == t.getMenuId().longValue())
{
tlist.add(n);
}
}
return tlist;
}
/**
- 判斷是否有子節點
*/
private boolean hasChild(List list, SysMenu t)
{
return getChildList(list, t).size() > 0 ? true : false;
}
相關文章
- 若依整合釘釘掃碼登入
- Shiro許可權框架框架
- 若依管理系統RuoYi-Vue(二):許可權系統設計詳解Vue
- android動態許可權到自定義許可權框架Android框架
- flowable 6.6.0 去掉自帶的登入許可權
- Util應用框架快速入門(5) - 許可權入門框架
- 【自然框架】許可權的視訊演示(二):許可權到欄位、許可權到記錄框架
- springboot + shiro 實現登入認證和許可權控制Spring Boot
- Springboot 整合ApachShiro完成登入驗證和許可權管理Spring Boot
- Spring Security實現統一登入與許可權控制Spring
- 後臺登入提示:”登入失敗:資料庫目錄寫入許可權不足!“資料庫
- EDP .Net開發框架--許可權框架
- 許可權框架之Shiro詳解框架
- Spring Boot:整合Shiro許可權框架Spring Boot框架
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- PbootCMS後臺登入提示:”登入失敗:資料庫目錄寫入許可權不足!“boot資料庫
- PbootCMS後臺登入提示:“登入失敗:資料庫目錄寫入許可權不足!”boot資料庫
- Linux 許可權入門指南Linux
- 許可權之選單許可權
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- GoFrame 框架使用 casbin 許可權認證GoFrame框架
- Django restframework 框架筆記 (二) 許可權DjangoRESTFramework框架筆記
- 單點登入與許可權管理本質:cookie安全問題Cookie
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- 登入失敗,提示“資料庫目錄許可權寫入不足”,可以操作設定資料庫目錄許可權為 777。資料庫
- 微信授權註冊或微信登陸 微信授權登陸 基於若依vue 實現Vue
- 若依框架匯入阿里OSS報錯問題解決方案框架阿里
- 許可權系統:一文搞懂功能許可權、資料許可權
- Laravel 框架的日誌許可權問題Laravel框架
- springboot 2.x 整合 shiro 許可權框架Spring Boot框架
- .NET 許可權工作流框架 TOP 榜框架
- 初識ABP vNext(4):vue使用者登入&選單許可權Vue
- [MySQL光速入門]031 許可權管理MySql
- MongoDB入門系列(四):許可權管理MongoDB
- Linux特殊許可權之suid、sgid、sbit許可權LinuxUI
- 若依dockerDocker
- Shiro許可權管理框架(一):Shiro的基本使用框架
- mysql許可權MySql