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-tw/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

發表回復

登錄後才能評論