nodejs 에서 express 구축 권한 관리 시스템
취지:
express 를 사용 하여 개발 한 프로젝트 는 크 고 작은 것 을 합 쳐 도 20 여 개가 되 었 고 예전 에 한 프로젝트 는 모두 독립 적 으로 존재 했다.최근 지도 자 는 이 작은 프로젝트 들 을 큰 플랫폼 에 통합 시 켜 각 부서 에 권한 을 부여 하고 한 플랫폼 에서 조작 하도록 하 자고 제안 했다.이렇게 하 는 장점 은 먼저 프로젝트 관리 에 편리 하고 그 다음은 개발 원 가 를 절약 하 는 것 이다.그러나 현재 nodejs 를 사용 하여 권한 관 리 를 하 는 자료 가 많 지 않 은 것 같 습 니 다.참고 하 시기 바 랍 니 다.
처음에는 nodeacl,Connect Roles,rbac 라 는 프레임 워 크 에서 배회 하 며 최종 선택 한 nodeacl 프레임 워 크,하지만 nodeacl 은 권한 관리의 일부분 만 해 주 었 을 뿐 사용자,역할,자원 간 의 관련 관계 만 저장 하고 사용자,역할,자원 자 체 는 저장 되 지 않 았 습 니 다.우리 가 해 야 할 일 은 바로 사용자,역할,자원 의 증 가 를 수정 하고 보완 하 는 것 이 바로 완전한 권한 관리 시스템 이다.
예상 효과:
슈퍼 관리자 가 로그 인 하면 모든 작업 을 할 수 있 고 모든 메뉴 표시 줄 을 볼 수 있 습 니 다.
일반 사용자 가 로그 인 한 후 일부 권한 만 있 고 일부 메뉴 표시 줄 이나 조작 버튼 만 볼 수 있 습 니 다.
주요 모듈:
express:node 프레임express-hbs:템 플 릿 엔진
sails-mongodb:mongodb 를 연결 하 는 엔진전단:
Amaze ui、angular、Z-Tree
원본 주소:https://github.com/wuwanyu/aclDemo
실행 전제:
mongodb 데이터베이스 설치
운행 하 다.
1.데이터 준비
(1)소스 코드 디 렉 터 리 아래 sql 폴 더 의 내용 을 mongodb 설치 디 렉 터 리 의 bin 디 렉 터 리 에 복사 합 니 다.
(2)명령 행 방식 으로 mongodb 설치 디 렉 터 리 의 bin 디 렉 터 리 에 들 어가 mongorestore-d acltest acltest.dmp/acltest 를 실행 하여 데 이 터 를 acltest 표 에 가 져 옵 니 다.
2.의존 패키지 설치:npm install
3.실행:npm start
4.브 라 우 저 에 입력:http://localhost:3000(사용자 이름/비밀번호:admin/admin 또는 user/123)
부분 캡 처
인터페이스 문서
자원 관련:
1.자원 트 리 저장
2.자원 목록 가 져 오기
캐릭터 관련:
1.캐릭터 추가
2.캐릭터 수정
3.캐릭터 목록 조회
4.캐릭터 삭제
4.캐릭터 에 대한 자세 한 정보 조회(캐릭터 권한 목록 포함)
사용자 관련:
1.사용자 로그 인
2.사용자 종료
3.사용자 추가
4.사용자 수정
5.사용자 삭제
6.사용자 목록 가 져 오기
7.사용자 정보 조회(사용자 권한 목록 포함)
8.사용자 에 게 캐릭터 추가
9.사용자 역할 가 져 오기
자원.
1.자원 트 리 저장(추가,수정,삭제 모두 이 방법)
/api/acl_resource/addArray
:
{
list:JSON.stringify(nodeList)
}
:
{
code:"200",
msg:" !"
}
2.자원 목록 가 져 오기
/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.캐릭터 목록 조회
/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
}
2.캐릭터 수정
/api/acl_role/update
:
{
id:xxx,
name:xxx,
}
:
{
code:"200",
msg:" !",
result:data.update
}
3.캐릭터 상세 조회(캐릭터 권한 목록 포함)
/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":["*"]
}
}
}
4.캐릭터 삭제
/api/acl_role/delete
① db
② acl removeAllow、 removeRole
:
{
id:xxx,
}
:
{
code:"200",
msg:" !",
result:result
}
5.캐릭터 에 자원 추가
/api/acl_role/allow
① acl.removeAllow
② acl.allow
:
{
role:xxx,
resources:xxx
}
:
{
code:"200",
msg:" !"
}
사용자 관련:1.사용자 로그 인
/api/acl_user/login
:
{
account:xxx,
password:xxx
}
:
{
code:200,
msg:" "
}
{
code:400,
msg:" "
}
{
code:400,
msg:" "
}
2.사용자 종료
/api/acl_user/logout
:{}
:
{
code:200,
msg:" !"
}
3.사용자 추가
/api/acl_user/add
:
{
name:xxx,
account:xxx,
password:xxx
}
:
{
code:"200",
msg:" !",
result:data.save
}
4.사용자 수정
/api/acl_user/update
:
{
id:xxx,
name:xxx,
account:xxx,
password:xxx
}
:
{
code:"200",
msg:" !",
result:data.save
}
5.사용자 정보 조회(사용자 권한 목록 포함)
/api/acl_user/getOne
① db
② acl allowedPermissions
:
{
id:xxx,
name:xxx,
account:xxx,
password:xxx
}
:
{
code:"200",
msg:" !",
result:data.save
}
6.사용자 목록 가 져 오기
/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
}
7.사용자 삭제
/api/acl_user/delete
① db
② acl removeUserRoles、 removeUser
:
{
id:xxx
}
:
{
code:"200",
msg:" !",
result:result
}
8.사용자 권한 가 져 오기
/api/acl_user/allowedPermissions
:
userId:xxx
resources:xxx
:
{
code:"200",
msg:" !",
result:result
}
9.사용자 에 게 캐릭터 추가
/api/acl_user/addUserRoles
① acl.userRoles、 acl.removeUserRoles
② acl.addUserRoles
:
userId:xxx
roles:xxx
:
{
code:"200",
msg:" !",
result:result
}
10.사용자 에 게 캐릭터 추가
/api/acl_user/userRoles
① acl.userRoles
:
userId:xxx
:
{
code:"200",
msg:" !",
result:result
}
nodejs 오픈 소스 권한 관리 프레임 워 크 참고:node_acl(1373 성):https://github.com/OptimalBits/node_acl
장점:express 지원
Connect Roles(564 성):https://github.com/ForbesLindesay/connect-roles
평가:express 지원,passport.js 도입 필요
rbac(309 성):https://github.com/CherryProjects/rbac
장점:express 지원
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
express를 사용하여 AWS S3 이미지에 액세스하기 위해 미리 서명된 URL을 생성하는 방법은 무엇입니까?이를 달성하는 방법 중 하나는 미리 서명된 URL을 사용하는 것입니다. However, the object owner can optionally share objects with others by creating a...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.