Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erläuterung des Baugenehmigungsverwaltungssystems in Express in NodeJS

Ausführliche Erläuterung des Baugenehmigungsverwaltungssystems in Express in NodeJS

巴扎黑
巴扎黑Original
2017-09-16 09:28:013469Durchsuche

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)

Benutzeranmeldung

2. Benutzer beenden
4. Benutzer löschen

7. Benutzerdetails abfragen

8. Dem Benutzer eine Rolle hinzufügen


Ressourcen



1 in dieser Methode)


2. Ressourcenliste abrufen



/api/acl_resource/addArray
参数:
{
 list:JSON.stringify(nodeList)
}
返回值:
{
 code:"200",
 msg:"创建成功!"
}
Charakter


1. Fragen Sie die Zeichenliste ab


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


2. Ändern Sie den Charakter



/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

Vorteile: unterstützt Express


Connect Roles (564 Sterne): https://github.com/ForbesLindesay/connect-roles

Kommentare: unterstützt Express, aber muss auch Passport.js einführen
/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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn