nodejs 에서 express 구축 권한 관리 시스템

13907 단어 express권한 관리
권한 관리,관리 시스템 에서 흔히 볼 수 있 는 구성 요소 입 니 다.일반적으로 자원 을 정의 하고 자원 을 사용자 에 게 배정 하 며 사용자 가 삭제 하고 수정 할 수 있 는 권한 이 있 는 지 판단 함으로써 이 루어 집 니 다.
취지:
express 를 사용 하여 개발 한 프로젝트 는 크 고 작은 것 을 합 쳐 도 20 여 개가 되 었 고 예전 에 한 프로젝트 는 모두 독립 적 으로 존재 했다.최근 지도 자 는 이 작은 프로젝트 들 을 큰 플랫폼 에 통합 시 켜 각 부서 에 권한 을 부여 하고 한 플랫폼 에서 조작 하도록 하 자고 제안 했다.이렇게 하 는 장점 은 먼저 프로젝트 관리 에 편리 하고 그 다음은 개발 원 가 를 절약 하 는 것 이다.그러나 현재 nodejs 를 사용 하여 권한 관 리 를 하 는 자료 가 많 지 않 은 것 같 습 니 다.참고 하 시기 바 랍 니 다.
처음에는 nodeacl,Connect Roles,rbac 라 는 프레임 워 크 에서 배회 하 며 최종 선택 한 nodeacl 프레임 워 크,하지만 nodeacl 은 권한 관리의 일부분 만 해 주 었 을 뿐 사용자,역할,자원 간 의 관련 관계 만 저장 하고 사용자,역할,자원 자 체 는 저장 되 지 않 았 습 니 다.우리 가 해 야 할 일 은 바로 사용자,역할,자원 의 증 가 를 수정 하고 보완 하 는 것 이 바로 완전한 권한 관리 시스템 이다.
예상 효과:
슈퍼 관리자 가 로그 인 하면 모든 작업 을 할 수 있 고 모든 메뉴 표시 줄 을 볼 수 있 습 니 다.
 일반 사용자 가 로그 인 한 후 일부 권한 만 있 고 일부 메뉴 표시 줄 이나 조작 버튼 만 볼 수 있 습 니 다.
주요 모듈:
express:node 프레임express-hbs:템 플 릿 엔진
  • node_acl:권한 관리 시스템 의 핵심
  • mongodb:데이터베이스
    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 지원
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기