2012-06-20 1 views
2

임베디드 Linux 시스템에서 Node.js 웹 서버를 실행하고 있습니다. 인증을 위해 현재 Passport의 로컬 전략을 사용하고 있으며 사용자 계정 정보는 다음과 같이 노드 스크립트 자체에 저장됩니다. 그것은 작동하지만, 나는 별도의 파일에 사용자 이름과 암호를 저장하고 웹 브라우저 인터페이스를 통해 사용자를 추가, 삭제 및 변경할 수 있도록하고 싶습니다기본 node.js/Passport 인증에 대한 계정 정보를 보유하는 간단한 텍스트 파일 기반 데이터베이스가 있습니까?

var users = [ 
    { id: 1, username: 'bob', password: 'secret', email: '[email protected]' } 
    , { id: 2, username: 'joe', password: 'birthday', email: '[email protected]' } 
]; 

. 내 임베디드 시스템에 너무 많은 오버 헤드가 발생하기 때문에 데이터베이스 서버를 사용하여 사용자 계정을 저장하고 싶지 않습니다.

계정을 쉽게 업데이트 할 수 있도록 라이브러리가있는 별도의 파일에 사용자 계정을 저장하는 좋은 방법에 대해 알고 계신 분이 있습니까?

EDIT : 노드 서버는 사용자 수가 매우 (2-20 명) 전자 제품 하드웨어에서 실행되므로 사용자 목록 업데이트를 수행하는 사람들이 서로 밟지 않아도됩니다. 초기 설정 후에는 사용자 목록이 많이 변경되지 않습니다.

+2

우선 나는 암호 저장을 변경합니다. 가능한 경우 실제 암호를 해시로 저장하지 마십시오. 지금은 보안상의 위험이 있습니다. – TheZ

+1

'bcrypt'는 가장 안전하고 (현재) 매우 사용하기 쉽습니다. –

답변

2

매우 간단한 접근 방식은 JSON 파일에서 읽는 것입니다. 업데이트시 accounts.json.(process id).tmp에 쓰고 파일의 이름을 accounts.json으로 바꿉니다. 두 사람이 동시에 들어 오면 업데이트를 잃을 위험이 있지만 어쩌면 그 사람과 함께 살 수 있습니다. (그런 다음 "실제"의 일부 값에 대해 "실제"데이터베이스를 사용할 수없는 경우).

JSON.stringify(data)을 사용하여 데이터 구조를 JSON으로 변환하고 JSON.parse(json)을 사용하여 파일의 JSON 문자열을 데이터 구조로 변환 할 수 있습니다.

서비스/서버 당신이 이미 아마 일반 텍스트로 암호를 저장하는 나쁜 생각임을 알고

var data = JSON.parse(fs.readFileSync(file_name)); 
4

와 계정을 읽을 수 차단할 수있는 작은만큼 사용이있는 경우; 적어도, 나는 해시를 bcrypt으로 추천 할 것이다. 그러나 그것이 질문에 관한 것이 아닙니다. 그래서 우리는 계속 나아갈 것입니다. :)

당신은 몇 가지 옵션이 있습니다

  1. 읽기 및 JSON.stringifyJSON.parse를 사용하여 수동으로 디스크에 데이터를 저장합니다. 데이터를 메모리에로드하고 변경되면 디스크로 다시 직렬화합니다.
  2. 사용 Persistance, 자동으로 메모리 스토리지를 지원하며, 노드 모듈 내장 기본적으로 동일 # 1하지만 이미 당신을 위해 디스크 (에 계속. :
  3. 사용 SQLite, 당신에게의 대부분의 기능을 제공하는 RDBS하지만 실행중인 서버가 필요하지 않고 파일로 직렬화됩니다.
+0

나는 그것을 고쳤다 :'{id : 1, username : 'bob', password : bcrypt ('secret'), email : '[email protected]'}' –

0

나는 당신이 사용하는 세 가지 태그를 완전히 모르고 있지만 간단한 텍스트 파일 기반 데이터베이스에 대해 묻는 질문에 매료되었습니다. 제가 완전히 다른 배경에서 왔기 때문에 당신이 내 대답을 부적절하다고 생각한다면 제발 신경 쓰지 마세요.

MongoDB를 살펴보십시오. 문서 기반의 DBMS로서 많은 문서를 처리 할 때 매우 유용합니다.

MongoDB는 JSON과 비슷하지만 표현력이 풍부한 이진 객체 형식 인 BSON을 사용합니다.그것은 "클래식"RDBMS에서와 같이 테이블에 데이터를 저장하는 대신 동적 스키마를 사용하여 BSON 형식으로 구조화 된 데이터를 저장하는 NOSQL 데이터베이스입니다.

당신은 당신이 자세한 내용이 링크를 방문 할 수있는 매력 발견하면

: MongoDb

관련 문제