Heim >Java >javaLernprogramm >Java-Autorisierung und -Authentifizierung
CRMBerechtigungsverwaltung
Die Berechtigungsverwaltung dient der Verwaltung von Benutzervorgängen auf Ressourcen. Die Berechtigungen (auch Ressourcen genannt) dieses CRM-Systems werden basierend auf Rollenbetriebsberechtigungen implementiert, d. h. RBAC (Role-Based Access Control, rollenbasierte Zugriffskontrolle), was bedeutet, dass Benutzer damit verknüpft sind Rollen und Berechtigungen. Einfach ausgedrückt hat ein Benutzer mehrere Rollen und jede Rolle verfügt über mehrere Berechtigungen. Auf diese Weise wird ein Berechtigungsmodell „Benutzer-Rolle-Berechtigung“ aufgebaut. In diesem Modell gibt es Viele-zu-Viele-Beziehungen zwischen Benutzern und Rollen sowie zwischen Rollen und Berechtigungen. Um die Viele-zu-Viele-Beziehung zwischen Tabellen zu realisieren, muss eine Viele-zu-Viele-Beziehung in Zwei-zu-Viele-Beziehungen unterteilt werden. Zu-viele-Beziehung. Daher werden Zwischentabellen, Benutzerrollentabellen und Rollenberechtigungstabellen eingeführt.
-Berechtigungsverwaltungsmodul umfasst insgesamt fünf Tabellen :
Drei Haupttabellen
a) Benutzertabelle (t_user),
b) Rollentabelle (t_role),
c ) Ressourcentabelle (t_module),
2. Zwei Zwischentabellen
a) Benutzerrollentabelle (t_user_role),
b) Rollenressourcentabelle (t_permission),
Berechtigungen erteilen für Rollen: Verwenden Sie ztree, um die Berechtigungsbaumstruktur zu erstellen
a) Berechtigungen erteilen
1. Binden Sie zuerst dieses Modul
2. Binden Sie das übergeordnete Modul; 🎜>
3, löschen Sie das übergeordnete Modul (bestimmen Sie, ob das übergeordnete Modul über andere mit dem Untermodul verknüpfte Wortrollen verfügt. Wenn nicht, brechen Sie es ab Es gibt, verknüpfen Sie es.)
a) Verwenden Sie das jQuery-Plug-in zTree, um eine Ressourcenbaumstruktur zu erstellen in Tabelle t_module
b) Klicken Sie mit der Maus auf Auswahlfeld in zTree zum Betreiben der
Tabelle t_permission (Rollenressourcentabelle)
zum Implementieren der Rolle Berechtigungen gewähren
Benutzern Rollen zuweisen Benutzern Rollen zuweisen: Verwenden Sie die Combobox-Mehrfachauswahl a). ). Konto ändern: Zuerst löschen, dann hinzufügen
Beim Erstellen eines Benutzers oder Ändern von Benutzerinformationen können Sie das Combobox-Mehrfachauswahlfeld verwenden, um dem Benutzer Rollenvorgänge zuzuweisen t_user_role (Benutzerrollentabelle)
Idee:
Aus der t_permission-Tabelle Rufen Sie den Berechtigungswert (acl_value) von der Seite ab und vergleichen Sie ihn mit dem von der Seite übergebenen Wert oder mit dem in der Anmerkung angegebenen Berechtigungswert:
1. Die Seite übergibt Request.getParameter("permission"); Abfrage der in der Datenbank gefundenen Berechtigungsliste basierend auf userId
2. Klären Sie den Modulberechtigungswert durch Anmerkungen: @requirePermission(permission="1010";
Erhalten Sie Benutzerberechtigungen und speichern Sie sie in der Sitzung. Wenn der Benutzer dann eine Ressource betreibt, wird der Berechtigungswert einer Ressource zur Bestimmung übermittelt ob der Benutzer über diese Berechtigung verfügt
Verwenden Sie Spring AOP, um die Authentifizierung abzufangen
1. Schritt: Aktivieren Sie den Annotationstreiber & lt;Schritt 2: Erstellen Sie eine Proxy-Klasse zur Verwendung der @Compone @Component-Annotation. Drei Schritte: Definieren Sie einen Startpunkt @pointcut ("*Execution ('com.shsxt.controller.*.*(((((..)))")
Public void PointCut () {}>
Schritt 4: Schreiben Sie eine Erweiterung: @Around(value="pointcut()") Benutzerberechtigungen Benutzerdefinierte Anmerkung
2. Schreiben Sie die Aspektklasse
Erreicht durch Übergabe des Berechtigungsparameters im Vordergrund:
Erreicht durch Annotationen
//@Pointcut("execution(* com.shsxt.controller.*.*(..))") @Pointcut("@annotation(com.shsxt.annotation.RequirePermissions)") public void pointcut() { }3. Führen Sie den AOP-Namespace ein und aktivieren Sie den AOP-Annotationstreiber
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, "您无权操作此模块"); }4. Aktivieren Sie Anmerkungen zu Methoden, die eine Berechtigungsauthentifizierung erfordern
Die Berechtigung sollte mit dem act_value in der Modultabelle übereinstimmen
<!-- 启用@Aspect注解 --> <aop:aspectj-autoproxy />
Front-End-Authentifizierung: Beurteilung der in Freemarker integrierten Funktion
Erhalten Sie Benutzerberechtigungen. Verwenden Sie dann die Freemarker-Syntax im Front-End-Freemarker, um zu bestimmen, ob der Benutzer diese Ressource bedienen kann (list?seq_contains('Berechtigungswert). '))
1.SQL:2. Fragen Sie die Berechtigung in der AOP-Aspektklasse ab, nehmen Sie die Berechtigungswertliste heraus und fügen Sie sie in die Sitzung ein
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;
Das obige ist der detaillierte Inhalt vonJava-Autorisierung und -Authentifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!