내 노드 앱에 로컬 인증을 제공하기 위해 passport-local을 사용하고 있습니다. 그러나 사용자 이름이 아닌 전자 메일 주소로 인증하도록 변경하고 싶습니다. 이것을 할 수있는 방법이 있습니까?Passport-Local (Node.js 포함)의 경우 사용자 이름 대신 전자 메일로 인증 할 수 있습니까?
감사합니다.
내 노드 앱에 로컬 인증을 제공하기 위해 passport-local을 사용하고 있습니다. 그러나 사용자 이름이 아닌 전자 메일 주소로 인증하도록 변경하고 싶습니다. 이것을 할 수있는 방법이 있습니까?Passport-Local (Node.js 포함)의 경우 사용자 이름 대신 전자 메일로 인증 할 수 있습니까?
감사합니다.
는합니다 (LocalStrategy
검증 콜백에서) 유효성 검사를 직접 구현해야하기 때문에, 당신이 그것을 전달할 수 있습니다 원하는 무엇이든 :
passport.use(new LocalStrategy(function(email, password, done) {
// search your database, or whatever, for the e-mail address
// and check the password...
});
이 먼저 {usernameField와 이메일로 기본 사용자 이름 필드를 변경해야합니다 ' 당신은 아래와 같이 요청 PARAMS에서 이메일 ID에 대한 데이터베이스를 조회 할 수 있습니다
passport.use(new LocalStrategy({ usernameField: 'email' }, function(email, password, done) {
UserModel.findOne({ email: email }, function(err, user) {
// Check password functionality
})
})
이것은 허용 된 대답이어야합니다. – derek
: 이메일 '} 그런 다음 비밀번호를 이메일을 기반으로 데이터베이스 검색을 실행하고 확인할 수 있습니다
,536,passport.use('signup', new LocalStrategy({
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, username, password, done) {
//console.log(email);
console.log(req.param('email'));
findOrCreateUser = function(){
// find a user in Mongo with provided username
User.findOne({ 'email' : req.param('email') }, function(err, user) {
});
}))
이것은 사용자 이름의 로컬 범위 이름을 변경하지만 여권은 'username'이외의 필드와 함께 POST 요청을 수락하기 때문에 userName 필드를 설정해야합니다. Maxim McNair의 대답을 참조하십시오. – Mentor