本文目錄一覽:
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-hant/n/311257.html