Maison > Article > interface Web > Explication détaillée du système de gestion des autorisations de construction dans Express dans Nodejs
Cet article présente principalement l'explication détaillée du système de gestion des autorisations d'Express. L'éditeur pense qu'il est plutôt bon. Maintenant, je vais le partager avec vous et vous donner une référence. Suivons l'éditeur et jetons un coup d'œil
La gestion des autorisations est un composant courant du système de gestion. Il est généralement nécessaire de définir des ressources et de les allouer aux utilisateurs. Ceci est réalisé en déterminant si l'utilisateur a l'autorisation d'ajouter, de supprimer, de modifier et de vérifier.
Intention initiale :
Il existe plus de 20 grands et petits projets développés via Express, et chacun des projets précédents existait indépendamment. Récemment, le leader a suggéré d'intégrer ces petits projets dans une grande plateforme, en accordant des autorisations à différents départements et en leur permettant de fonctionner sur une seule plateforme. Les avantages de cette démarche sont d’une part de faciliter la gestion de projet, et d’autre part de réduire les coûts de développement. Mais il semble qu'il n'y ait pas beaucoup d'informations sur l'utilisation de nodejs pour la gestion des autorisations à l'heure actuelle. Je les partage ici à titre de référence uniquement.
Au début, j'ai erré parmi les frameworks node_acl, Connect Roles et rbac, et j'ai finalement choisi le framework node_acl, mais node_acl ne vous aide qu'avec une partie du travail de gestion des autorisations, et n'enregistre que les utilisateurs, les rôles et ressources. Les relations entre les utilisateurs, les rôles et les ressources elles-mêmes ne sont pas enregistrées. Ce que nous devons faire est de terminer l'ajout, la suppression, la modification et la vérification des utilisateurs, des rôles et des ressources, et ce sera un système complet de gestion des autorisations.
Résultats attendus :
Après s'être connecté, le super administrateur peut effectuer toutes les opérations et voir toutes les barres de menus
Les utilisateurs ordinaires n'ont que des autorisations partielles après s'être connectés ; . Seule une partie de la barre de menu ou des boutons d'action est visible.
Modules principaux :
express : framework de nœuds
express-hbs : moteur de modèles
node_acl : le cœur du système de gestion des autorisations
mongodb : base de données
sails-mongodb : connexion moteur mongodb
Front-end :
Amaze ui, angulaire, Z-Tree
Adresse du code source : https:// github.com/wuwanyu/aclDemo
Prérequis d'exécution :
Installer la base de données mongodb
Exécuter
1. Préparation des données
(1) Copiez le contenu du dossier sql dans le répertoire du code source dans le répertoire bin du répertoire d'installation de mongodb
(2) Entrez le répertoire bin du répertoire d'installation de mongodb en utilisant la ligne de commande et exécutez mongorestore -d acltest acltest.dmp/acltest, importez les données dans la table acltest
2 Installez les packages de dépendances : npm install
3.
4. Parcourir l'entrée du serveur : http://localhost:3000 (nom d'utilisateur/mot de passe : admin/admin ou user/123) Captures d'écran partielles
Document d'interface
Ressource liée : 2. Obtenir la liste des ressources
2. Modifier un rôle
3. Interroger la liste des rôles
4. Supprimer le rôle
4. Interroger les détails du rôle (y compris la liste des autorisations de rôle)
3. Ajouter un utilisateur
4. Modifier l'utilisateur
5. Supprimer l'utilisateur
6. Obtenir la liste des utilisateurs
7. >8. Donner à l'utilisateur ajoute un rôle
9. Obtenir le rôle de l'utilisateur
Ressources
1. , modifier et supprimer)
2. Obtenir la liste des ressources
/api/acl_resource/addArray 参数: { list:JSON.stringify(nodeList) } 返回值: { code:"200", msg:"创建成功!" }
Personnage
/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 }
1. Interroger la liste des personnages
2.
/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 }
/api/acl_role/update 参数: { id:xxx, name:xxx, } 返回值: { code:"200", msg:"修改成功!", result:data.update }
/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":["*"] } } }
/api/acl_role/delete ① db删除角色 ② acl删除该角色和资源的关系removeAllow、删除角色removeRole 参数: { id:xxx, } 返回值: { code:"200", msg:"删除成功!", result:result }
Connexe à l'utilisateur :
/api/acl_role/allow ① 删除角色和资源的关系acl.removeAllow ② 给角色和资源添加关系acl.allow 参数: { role:xxx, resources:xxx } 返回值: { code:"200", msg:"成功!" }1. Connexion de l'utilisateur
/api/acl_user/login 参数: { account:xxx, password:xxx } 返回值: { code:200, msg:"登录成功" } { code:400, msg:"密码错误" } { code:400, msg:"账号不存在" }
3. Ajouter un utilisateur
/api/acl_user/logout 参数:{} 返回值: { code:200, msg:"退出成功!" }
4.
/api/acl_user/add 参数: { name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"创建成功!", result:data.save }
/api/acl_user/update 参数: { id:xxx, name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"修改成功!", result:data.save }
/api/acl_user/getOne ① db获取用户信息 ② acl获取用户权限allowedPermissions 参数: { id:xxx, name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"修改成功!", result:data.save }
/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 }
/api/acl_user/delete ① db删除用户 ② acl删除用户角色关系removeUserRoles、删除用户removeUser 参数: { id:xxx } 返回值: { code:"200", msg:"删除成功!", result:result }
/api/acl_user/allowedPermissions 参数: userId:xxx resources:xxx 返回值: { code:"200", msg:"成功!", result:result }
/api/acl_user/addUserRoles ① 获取用户所有角色acl.userRoles、删除用户所有角色acl.removeUserRoles ② 添加新的角色acl.addUserRoles 参数: userId:xxx roles:xxx 返回值: { code:"200", msg:"成功!", result:result }
node_acl (1373 étoiles) : https : //github.com/OptimalBits/node_acl
Avantages : Prend en charge express
Connect Roles (564 étoiles) : https://github.com/ForbesLindesay/connect-roles
Commentaires : Prend en charge express, mais doit également introduire passeport.js
rbac (309 étoiles) : https://github.com/CherryProjects/rbac
Avantages : prend en charge express
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!