Heim > Artikel > Web-Frontend > Ausführliche Erläuterung des Baugenehmigungsverwaltungssystems in Express in NodeJS
In diesem Artikel wird hauptsächlich das Berechtigungsverwaltungssystem von Express ausführlich erläutert. Der Herausgeber findet es recht gut. Jetzt werde ich es mit Ihnen teilen und Ihnen eine Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.
Die Berechtigungsverwaltung ist eine gemeinsame Komponente im Verwaltungssystem. Normalerweise ist es notwendig, Ressourcen zu definieren und Benutzern Ressourcen zuzuweisen. Dies wird erreicht, indem festgestellt wird, ob der Benutzer über die Berechtigung zum Hinzufügen, Löschen, Ändern und Überprüfen verfügt.
Ursprüngliche Absicht:
Es gibt mehr als 20 große und kleine Projekte, die mit Express entwickelt wurden, und jedes der vorherigen Projekte existierte unabhängig. Kürzlich schlug der Leiter vor, diese kleinen Projekte in eine große Plattform zu integrieren, verschiedenen Abteilungen Berechtigungen zu erteilen und ihnen den Betrieb auf einer Plattform zu ermöglichen. Der Vorteil liegt zum einen in der Erleichterung des Projektmanagements und zum anderen in der Einsparung von Entwicklungskosten. Es scheint jedoch, dass es derzeit nicht viele Informationen zur Verwendung von NodeJS für die Berechtigungsverwaltung gibt. Ich teile sie hier nur als Referenz.
Zuerst bin ich zwischen den Frameworks node_acl, Connect Roles und rbac umhergewandert und habe mich schließlich für das Framework node_acl entschieden, aber node_acl hilft Ihnen nur bei einem Teil der Berechtigungsverwaltungsarbeit und speichert nur Benutzer, Rollen usw Ressourcen Die Beziehungen zwischen Benutzern, Rollen und Ressourcen selbst werden nicht gespeichert. Was wir tun müssen, ist das Hinzufügen, Löschen, Ändern und Überprüfen von Benutzern, Rollen und Ressourcen abzuschließen, und es wird ein vollständiges Berechtigungsverwaltungssystem sein.
Erwartete Ergebnisse:
Nach der Anmeldung kann der Superadministrator alle Vorgänge ausführen und alle Menüleisten sehen.
Normale Benutzer haben nach der Anmeldung nur teilweise Berechtigungen . Nur ein Teil der Menüleiste oder Aktionsschaltflächen ist sichtbar.
Hauptmodule:
Express: Node Framework
Express-Hbs: Template Engine
node_acl: der Kern des Berechtigungsverwaltungssystems
mongodb: Datenbank
sails-mongodb : Verbindung Mongodb-Engine
Frontend :
Amaze ui, Angular, Z-Tree
Quellcode-Adresse: https:// github.com/wuwanyu/aclDemo
Ausführungsvoraussetzungen:
Mongodb-Datenbank installieren
Ausführen
1. Datenvorbereitung
(1) Kopieren Sie den Inhalt des SQL-Ordners im Quellcodeverzeichnis in das bin-Verzeichnis des Mongodb-Installationsverzeichnisses
(2) Geben Sie das bin-Verzeichnis des Mongodb-Installationsverzeichnisses ein Verwenden Sie die Befehlszeile und führen Sie mongorestore -d acltest acltest.dmp/acltest aus, importieren Sie Daten in die acltest-Tabelle
2. Installieren Sie Abhängigkeitspakete: npm install
3. Führen Sie Folgendes aus: npm start
4. Servereingabe durchsuchen: http://localhost:3000 (Benutzername/Passwort: admin/admin oder Benutzer/123)
Teilweise Screenshots
Schnittstellendokument
Ressourcenbezogen:
1. Ressourcenbaum speichern
2. Ressourcenliste abrufen
Rollenbezogen:
1. Rolle hinzufügen
2. Rolle ändern
3. Rollenliste abfragen
4. Rollendetails abfragen (einschließlich Rollenberechtigungsliste)
2. Benutzer beenden
4. Benutzer löschen
8. Dem Benutzer eine Rolle hinzufügen
Ressourcen
1 in dieser Methode)
/api/acl_resource/addArray 参数: { list:JSON.stringify(nodeList) } 返回值: { code:"200", msg:"创建成功!" }Charakter
/api/acl_resource/getList 参数:无 返回值: { "code": "200", "msg": "获取详情成功", "result": [ { "pId": "0", "name": "全部", "pinyin_name": "quanbu", "createdAt": "2017-05-26T09:49:03.139Z", "updatedAt": "2017-05-27T07:17:41.959Z", "id": "1" }, { "pId": "1", "name": "首页", "pinyin_name": "shouye", "createdAt": "2017-05-26T09:49:03.141Z", "updatedAt": "2017-05-27T07:17:41.961Z", "id": "41cd1dce-66c9-4aca-91c2-9135fba291c3" }, { "pId": "1", "name": "经适房", "pinyin_name": "jingshifang", "createdAt": "2017-05-26T09:49:03.142Z", "updatedAt": "2017-05-27T07:17:41.962Z", "id": "d2da6e56-f005-43cf-b109-af3a966fb059" }, { "pId": "d2da6e56-f005-43cf-b109-af3a966fb059", "name": "经适房首页", "pinyin_name": "jingshifangshouye", "createdAt": "2017-05-26T09:49:03.142Z", "updatedAt": "2017-05-27T07:17:41.963Z", "id": "74a7970a-d53e-494b-9671-4b7b415c3469" }, { "pId": "d2da6e56-f005-43cf-b109-af3a966fb059", "name": "经适房历史", "pinyin_name": "jingshifanglishi", "createdAt": "2017-05-26T09:49:03.143Z", "updatedAt": "2017-05-27T07:17:41.964Z", "id": "15862997-acef-43c1-a1c3-3af4b8e6588b" }, { "pId": "1", "name": "对账单", "pinyin_name": "duizhangdan", "createdAt": "2017-05-26T09:51:48.411Z", "updatedAt": "2017-05-27T07:17:41.965Z", "id": "78aa4788-f42f-42b6-9db1-e8ff0ad5b5df" }, { "pId": "78aa4788-f42f-42b6-9db1-e8ff0ad5b5df", "name": "对账单首页", "pinyin_name": "duizhangdanshouye", "createdAt": "2017-05-26T09:51:48.412Z", "updatedAt": "2017-05-27T07:17:41.966Z", "id": "c0f68fa4-81cd-4908-8005-97c88445d7b3" }, { "pId": "78aa4788-f42f-42b6-9db1-e8ff0ad5b5df", "name": "对账单管理", "pinyin_name": "duizhangdanguanli", "createdAt": "2017-05-26T09:51:48.412Z", "updatedAt": "2017-05-27T07:17:41.966Z", "id": "5fe3e266-5a2a-47a4-b309-ee6f15db49ec" }, { "pId": "1", "name": "系统管理", "pinyin_name": "xitongguanli", "createdAt": "2017-05-26T09:51:48.413Z", "updatedAt": "2017-05-27T07:17:41.966Z", "id": "fbe848c4-950e-402d-92c5-6fe067fd1bac" }, { "pId": "fbe848c4-950e-402d-92c5-6fe067fd1bac", "name": "用户管理", "pinyin_name": "yonghuguanli", "createdAt": "2017-05-26T09:51:48.416Z", "updatedAt": "2017-05-27T07:17:41.967Z", "id": "1fd06306-6539-48e5-bf10-99ecd337e143" }, { "pId": "fbe848c4-950e-402d-92c5-6fe067fd1bac", "name": "资源管理", "pinyin_name": "ziyuanguanli", "createdAt": "2017-05-26T09:51:48.416Z", "updatedAt": "2017-05-27T07:17:41.969Z", "id": "5de41a10-f31f-4eb2-91ba-25da102a25aa" }, { "pId": "fbe848c4-950e-402d-92c5-6fe067fd1bac", "name": "角色管理", "pinyin_name": "jiaoseguanli", "createdAt": "2017-05-26T09:51:48.416Z", "updatedAt": "2017-05-27T07:17:41.970Z", "id": "9ffb5a8a-c304-403a-a724-f47cc73a9162" }, { "pId": "1", "name": "new node1", "pinyin_name": "new node1", "createdAt": "2017-05-27T07:17:41.971Z", "updatedAt": "2017-05-27T07:17:41.971Z", "id": "d336dd69-80c7-492f-aee7-78a651b8305e" } ], "count": 13 }
/api/acl_role/getList:获取角色列表 参数:无 返回值: { "code": "200", "msg": "获取详情成功", "result": [ { "name": "经适房用户", "createdAt": "2017-05-26T09:49:22.361Z", "updatedAt": "2017-05-26T09:49:22.361Z", "id": "27aab6d9-325c-4c88-be4a-5da516dc9613" }, { "name": "对账单用户", "createdAt": "2017-05-26T09:52:15.061Z", "updatedAt": "2017-05-26T09:52:15.061Z", "id": "ba306957-9c80-4abb-89fd-17be828dd5f5" }, { "name": "对账单管理员", "createdAt": "2017-05-26T09:52:26.914Z", "updatedAt": "2017-05-26T09:52:26.914Z", "id": "fc154424-2264-4de9-9a7c-1b1df048f802" }, { "name": "超级管理员", "createdAt": "2017-05-26T09:52:39.894Z", "updatedAt": "2017-05-26T09:52:39.894Z", "id": "442cfc56-23a9-4cb9-85b5-641bc161c4c3" } ], "count": 4 }3. Rollendetails abfragen (einschließlich Rollenberechtigungsliste)
/api/acl_role/update 参数: { id:xxx, name:xxx, } 返回值: { code:"200", msg:"修改成功!", result:data.update }4
/api/acl_role/getOne 参数: id:27aab6d9-325c-4c88-be4a-5da516dc9613 返回值: { "code": "200", "msg": "获取详情成功", "result": { "info": { "name": "经适房用户", "createdAt": "2017-05-26T09:49:22.361Z", "updatedAt": "2017-05-26T09:49:22.361Z", "id": "27aab6d9-325c-4c88-be4a-5da516dc9613" }, "resources": { "1": ["*"], "74a7970a-d53e-494b-9671-4b7b415c3469":["*"], "15862997-acef-43c1-a1c3-3af4b8e6588b": ["*"], "d2da6e56-f005-43cf-b109-af3a966fb059": ["*"], "d336dd69-80c7-492f-aee7-78a651b8305e":["*"] } } }5. Fügen Sie dem Charakter Ressourcen hinzu
/api/acl_role/delete ① db删除角色 ② acl删除该角色和资源的关系removeAllow、删除角色removeRole 参数: { id:xxx, } 返回值: { code:"200", msg:"删除成功!", result:result }
Benutzerbezogen:
1. Benutzeranmeldung
/api/acl_role/allow ① 删除角色和资源的关系acl.removeAllow ② 给角色和资源添加关系acl.allow 参数: { role:xxx, resources:xxx } 返回值: { code:"200", msg:"成功!" }
2. Benutzerabmeldung
/api/acl_user/login 参数: { account:xxx, password:xxx } 返回值: { code:200, msg:"登录成功" } { code:400, msg:"密码错误" } { code:400, msg:"账号不存在" }3. Benutzer hinzufügen
/api/acl_user/logout 参数:{} 返回值: { code:200, msg:"退出成功!" }4. Benutzer ändern
/api/acl_user/add 参数: { name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"创建成功!", result:data.save }5. Benutzerdetails abfragen (einschließlich Benutzerberechtigungsliste)
/api/acl_user/update 参数: { id:xxx, name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"修改成功!", result:data.save }6 Liste
/api/acl_user/getOne ① db获取用户信息 ② acl获取用户权限allowedPermissions 参数: { id:xxx, name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"修改成功!", result:data.save }7. Benutzer löschen
/api/acl_user/getList 参数: { } 返回值: { "code": "200", "msg": "获取详情成功", "result": [ { "name": "wuwanyu", "createdAt": "2017-05-27T02:14:19.994Z", "updatedAt": "2017-05-27T02:50:56.309Z", "account": "120", "password": "123", "id": "7daa4635-9f9d-4c79-9f15-c827097ac15a" } ], "count": 1 }8 Benutzerberechtigungen
/api/acl_user/delete ① db删除用户 ② acl删除用户角色关系removeUserRoles、删除用户removeUser 参数: { id:xxx } 返回值: { code:"200", msg:"删除成功!", result:result }9. Rollen zu Benutzern hinzufügen
/api/acl_user/allowedPermissions 参数: userId:xxx resources:xxx 返回值: { code:"200", msg:"成功!", result:result }10. Rollen zu Benutzern hinzufügen
/api/acl_user/addUserRoles ① 获取用户所有角色acl.userRoles、删除用户所有角色acl.removeUserRoles ② 添加新的角色acl.addUserRoles 参数: userId:xxx roles:xxx 返回值: { code:"200", msg:"成功!", result:result }nodejs Open Source Permission Management Framework-Referenz:
node_acl (1373 Sterne): https:/ /github.com/OptimalBits/node_acl
Connect Roles (564 Sterne): https://github.com/ForbesLindesay/connect-roles
/api/acl_user/userRoles ① 获取用户所有角色acl.userRoles 参数: userId:xxx 返回值: { code:"200", msg:"成功!", result:result }
rbac (309 Sterne): https://github.com/CherryProjects/rbac
Vorteile: unterstützt Express
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Baugenehmigungsverwaltungssystems in Express in NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!