2015-06-26 17 views
5

Passport.js, Node.js.'de kimlik doğrulama çerçevesi sağlar. Sadece Kimlik Doğrulama ile ilgilenir.Sails.js içinde pasaport yerel stratejisinde parola nasıl sıfırlanır?

Şimdi parola sıfırlamayı etkinleştirmek istiyorum. Kullanıcı modelinde şifre alanı olmadığından, yalnızca pasaportlar, pasaport-yerel stratejide şifreyi nasıl sıfırlayabilirim? Kullanıcının yeni bir parola oluşturması ve eski parolanın varoluş karmasını geçersiz kılacak bir şey çağırması gerektiğini varsayalım. Hangi yöntemler bunlar ve onları nerede bulabilirim?

+0

ile otomatik üretilir? –

+0

pasaport yerel stratejisi, varsayılan olarak her kullanıcı için otomatik bir şifre oluşturdu ve bir yere kaydetti. Nerede saklandığını ve nasıl değiştirileceğini bilmiyorum. – windchime

+0

Kullanıcı modelinizin kodunu ekleyebilir misiniz? AFAIK pasaport yerel stratejisi bir kullanıcı adı ve şifre alanı gerektirir. Lütfen buna bakın - http://passportjs.org/docs/configure –

cevap

0

Kullanıcı şifresini sıfırlamayı seçtiğinde, ne yapabileceğiniz kullanıcıyla ilişkili bir belirteç içeren bir bağlantıya sahip kullanıcıya e-posta göndermektir. Kullanıcı bağlantıyı tıkladığında, kullanıcıyı & e-postasına göre doğrular ve ardından sıfırlama şifresini HTML olarak gösterirsiniz. Kullanıcı yeni şifreye girdiğinde, arka uç kodunda, şifreyi User nesnesinin üzerine yazdıktan sonra belirledikten sonra kaydedin. Belirteci de boş olarak ayarlayabilirsiniz. base64 ile

bir örnek kod olarak HashPassword yöntemi

user.salt = new Buffer(crypto.randomBytes(16).toString('base64'), 'base64'); 
user.password = user.hashPassword('newPassword'); 
user.token = undefined; 
user.save(...) 

aşağıdaki gibi olduğu gösterilir.

UserSchema.methods.hashPassword = function(password) { 
    if (this.salt && password) { 
     return crypto.pbkdf2Sync(password, this.salt, 10000, 64).toString('base64'); 
    } else { 
     return password; 
    } 
}; 

Yukarıdaki kod nasıl şifre alanına olmadan şifreyi depolamak olan Yeoman

İlgili konular