本文目錄一覽:
java許可權管理新增一個角色如何與菜單建立聯繫
第一篇先講一下 菜單角色的操作 大概思路是這樣:
1、前端傳入 含有角色的編號和菜單編號的json串 你需要做map處理 以菜單編號為key value則是這個含有角色編號 和菜單編號的實體(實體可自定義為VO層 避免與資料庫的實體類混亂)
2、獲取這個角色編號在資料庫已經存入的菜單編號集合實體類
3、根據對map的key值判斷 包含就不需要操作 直接把map中的這個實體類刪除掉 不做處理
4、不包含的則需要把資料庫內的這個角色菜單 做物理刪除 因為前端發來的數據 就是最終確認 勾選的菜單許可權 (前端傳入的是最後勾選的菜單 json 不管之前如何 最後只是勾選的json 也是最終這個角色所擁有的角色菜單)
5、如果最後這個map 還有值得話 就是這個角色需要新增得角色菜單 做添加處理
6、這個也是最需要注意得一點 邏輯修改和添加 必須在同一個事務處理內 必須同步 ! 望注意
java如何做許可權管理
首先介紹下思路:
1、用戶表 user;
2、角色表 role;
3、菜單 menu;
4、角色菜單許可權表 role_menu;
5、用戶菜單許可權表 user_menu;
如圖:
根據用戶角色取出該角色所有許可權,並對用戶進行許可權分配;注意菜單的按鈕(新增、刪除、修改)許可權是放在中間表(user_menu)中的;
1、新增用戶時,是要根據用戶角色進行分配許可權的 一定記得批量添加;批量、批量、批量,重要的事情說三遍,不要查詢角色許可權,然後for循環,這樣效率太低了;
SQL如下:
INSERT INTO sys_user_menu(UserId, MenuId, DelPower, UpdPower, InsPower, ViewPower)
SELECT #{userId} UserId, MenuId, 1 DelPower, 1 UpdPower, 1 InsPower, 1 ViewPower FROM sys_role_menu WHERE RoelId = #{roleId}
updPower 默認都是有的 所以都是1,這樣根據角色查詢出許可權直接添加,響應時間大大提升;
2、修改用戶角色也要記得重新分配用戶許可權哦!這個不能忘,可以用上面的方法;
業務方法:
如果角色沒有修改,是不用重新分配許可權的,所有userRole 重置為 null,如果角色修改則刪除原許可權,重新進行分配;
3、最後要優化的就是根據用戶查詢許可權的時候啦,我最開始是這樣做的,查詢角色許可權,用戶許可權,返回到前端,前端進行處理;結果就是很卡 基本上要三到四秒,
解決方案,一步到位;一個查詢返回全部數據。
如下SQL:
SELECT menu.MenuId id, ParentId pid, MenuName text,
(SELECT COUNT(1) FROM sys_user_menu WHERE UserId = #{userId} AND MenuId = sm.MenuId) isShow,
(SELECT CONCAT(
(CASE WHEN smenu.InsPower = 1 THEN 1 ELSE 0 END), ‘,’,
(CASE WHEN smenu.DelPower = 1 THEN 1 ELSE 0 END), ‘,’,
(CASE WHEN smenu.UpdPower = 1 THEN 1 ELSE 0 END), ‘,’,
(CASE WHEN smenu.ViewPower = 1 THEN 1 ELSE 0 END))
FROM sys_user_menu smenu WHERE smenu.UserId = #{userId}
AND smenu.MenuId = sm.MenuId) MenuInfo
FROM sys_role_menu sm INNER JOIN sys_menu menu on sm.MenuId = menu.MenuId
WHERE RoelId = #{roleId}
首先根據 角色ID查詢出許可權,然後子查詢用戶是否有該許可權,有返回1 木用返回 0;
最後按鈕許可權 我是直接拼接成字元串,分別對應 添加、刪除、修改、查看 1 有該按鈕 0 沒有該按鈕;
優化後 不管是添加、修改用戶,載入用戶許可權都能控制在 1~2 秒;
javaweb 項目的系統許可權管理,怎麼設計?
java web 項目的系統許可權管理設計方法有兩種:
方法一、SpringMVC整合Shiro (Shiro是強大的許可權管理框架)
參考:
方法二、基於角色的訪問許可權控制
基於角色的訪問許可權控制
首先基於角色的訪問許可權控制,所有的用戶訪問都會經過過濾,然後分析訪問許可權加以認證!許可權中的重點,表的設計。
普遍三張表,表名自定義。用戶表(User),角色表(Role),資源表(Resource)
用戶表沒有特別,很簡單。關鍵是角色表和資源表。
java項目裡面的許可權管理怎麼做
你說的就是簡單的角色許可權。這些在網上有很多的教程,而且比較簡單,我可以給你一點提示
1:如果你登陸頁面之後,比如想點一個按鈕提交,那麼如果你有這麼許可權才能看見或者才能點的話,那麼你可以做一個簡單的判斷,比如if(如果有這個許可權,那麼可以點或者可以看見),這時就做了一個簡單的許可權。
2:那麼你的許可權哪來的,資料庫中存著。
3:角色是什麼,角色關聯了很多的許可權,你登陸之後判斷你幾個角色,然後在遍歷你的角色就拿到了你的所有許可權,那麼按鈕那就可以判斷了,當然這是比較笨的方法,原理都是這樣子,也有很多許可權框架會比較方便
不理解可以問我
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/311257.html