Java的授權與認證
CRM權限管理
一、概念
權限管理就是管理使用者對於資源的操作。本CRM 系統的權限(也稱為資源)是基於角色操作權限來實現的,也就是RBAC(Role-Based Access Control,基於角色的存取控制),就是使用者透過角色與權限進行關聯。簡單地說,一個使用者擁有若干角色,每個角色擁有若干權限。這樣,就建構成「使用者-角色-權限」的授權模型。在這個模型中,使用者與角色之間,角色與權限之間都是多對多的關係,為了實現表之間多對多的關係,必須將一個多對多的關係透過一個中間表分為兩個一對多的關係。因此引入中間表,使用者角色表和角色權限表。
二、資料庫
權限管理模組共涉及五張表:
#三張主表 a) 使用者表(t_user)、
. 資源表(t_module)、
2.兩張中間表
a) 使用者角色表(
#三、權限管理實作
1、模組、角色、使用者的單表CRUD
模組CRUD:操作t_module表
角色CRUD:操作t_role表##
2、授權
角色賦予權限
給予角色權限:使用ztree進行權限樹結構的建構
a)賦權限
# 2、綁定父模組;
3、綁定子模組
1、先刪除本模組;
2、刪除子模組;
# 3
33 、刪除父模組(判斷父模組是否有其他的子模組關聯詞角色,如果沒有就取消,如果有就關聯)a) 使用jQuery的插件zTree建構一個資源的樹狀結構,樹中的內容為表t_module
#中的資料
# b) 用滑鼠點選zTree中的選擇框操作表t_permission(角色資源表)
#實作給角色賦予權限
用戶賦予角色 給用戶賦予角色:使用的combobox多重選擇 t_user_role插入記錄 b).於上使用帳號:先刪除,請於新增##### ##### ##### ##### ##### ##### ##### ##### ###
建立使用者或是修改使用者資訊時都可以透過combobox多重選取框給使用者賦予角色動作 t_user_role(使用者角色表)
3、認證
# 從t_permission表中取得權限值(acl_value)與頁面傳來的值或與註解中明確的權限值比較,以下提供兩種思路:
1.頁面傳遞過來Request.getParameter(“permission”);比對根據userId查詢資料庫查到的權限清單 contains
2.透過註解明確模組權限值:@requirePermission(permission=”1010”;
#後台認證:Spring AOP和自訂註解實作認證
取得使用者權限存入session,然後使用者操作資源時會提交一個資源的權限值,在判斷使用者是否包含有此權限
使用Spring AOP進行攔截認證
第一步:開啟註解驅動
第步驟三:定義一個切入點@Pointcut(" *execution('com.shsxt.controller.*.*((..))')")
public void pointcut() {}
第四步:寫出一個增強:@Around(value="pointcut()")
2.使用使用者權限 # 造成以來的權限校驗 5.以「返回」
//@Pointcut("execution(* com.shsxt.controller.*.*(..))") @Pointcut("@annotation(com.shsxt.annotation.RequirePermissions)") public void pointcut() { }
List<String> permissions = permissionService.findRolePermissions(roleIds.substring(0, roleIds.lastIndexOf(","))); String permissioFront = request.getParameter("permission"); // 后台权限认证 AssertUtil.isTrue(!permissions.contains(permissioFront), "您无权操作此模块");
List<String> permissions = permissionService.findRolePermissions(roleIds.substring(0, roleIds.lastIndexOf(","))); if (requirePermissions != null) { String permission = requirePermissions.permission(); // 后台权限认证 throw new UnAuthPermissionException(permission, "您无权操作此模块"); }
<!-- 启用@Aspect注解 --> <aop:aspectj-autoproxy />
SELECT DISTINCT p.acl_value FROM t_permission p -- LEFT JOIN t_role r ON r.id = ur.role_id left JOIN t_user_role ur on p.role_id = ur.role_id WHERE ur.user_id = 10;
以上是Java的授權與認證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
