2012-07-23 2 views
7

현재 node.js에서 내 프로젝트의 인증 모듈을 만들려고하고 있습니까?해시를 생성하기 위해 node.js에서 사용할 비동기 또는 동기화 bcrypt 함수?

제가

즉 이미

https://github.com/bnoguchi/mongoose-auth/blob/master/lib/modules/password/plugin.js https://github.com/Turbo87/locomotive-passport-boilerplate/blob/master/app/models/account.js

그러나, 어떤 이유로 그들이 bcrypt.hashSync() 함수를 사용하고, 해시를 생성 bcrypt 사용의 몇몇 예를 보았다.

User.virtual('password') 
.get(function() { 
    return this.hash; 
}) 
.set(function (password) { 
    bcrypt.hash('password', 10, function(err, hash) { 
     this.hash = hash; 
    }); 
}); 

당신이 어떤 방법이 더 나은 이유 설명해 주 시겠어요 : 그것은 시간이 걸리는 때문에 bcrypt 좋은이기 때문에, 즉, 대신 코드를 차단하지하기 위해 비동기 기능을 사용 현명하지 않을까요? 고맙습니다!

답변

7

가능하다면 비동기 버전을 사용하여 비밀번호 해시 중에 노드 처리를하지 않아도됩니다. 두 소스 코드에서 참조하는 코드는 동기화 된 버전을 사용하고 있습니다. 왜냐하면 그 안에 사용 된 메소드가 동기식이어서 작성자가 동기식 버전을 사용할 수 밖에 없었기 때문입니다.

+3

+1, 비동기는 확실히 적당한 선택이다; Mongoose와 같은 ODM을 사용할 때 getter와 setter는 비동기 적이 지 않기 때문에 일부 작성자는 내부에서 동기 메소드를 대신 사용한다는 점을 기억해야합니다. 이것은 일반적으로 잘못된 행동입니다. 과거에는 'setPassword'와 같은 모델에서 비동기 암호 집합을 수행하는 사용자 지정 메서드를 사용했습니다. –

+0

@BrandonTilley는 맞춤 메소드의 예를 들어 줄 수 있습니까? –

+2

@lori 오,이 글을 올린 지 오래되었지만, 이와 비슷한 것은 가까운 것 같습니다. https://gist.github.com/BinaryMuse/7983335 –

관련 문제