java權限管理,java權限管理用什麼技術

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-05 13:23
下一篇 2025-01-05 13:23

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論