내가 Node.js를에서 총 초보자 그래서 나와 함께 기다려주십시오 :Node.js를 여권 개체있는 방법 validPassword
내가 Node.js를 + 익스프레스 3 + 여권을 사용하고있어주의하시기 바랍니다이 없습니다 간단한 인증 (로컬) 단지 주변
재생을 생성하고 지금까지 잘못된 사용자 이름이나 암호를 사용자가 입력 할 때 오류 페이지
하지만, 리디렉션되는 도달 한 것을 사용자가 올바른 들어갈 때 사용자 이름과 암호이 오류가 발생합니다.
node_modules\mongoose\lib\utils.js:435
throw err;
^
TypeError: Object { _id: 50b347decfd61ab9e9e6768f,
username: 'saleh',
password: '123456' } has no method 'validPassword'
/루트 이제
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
var mongoose = require('mongoose');
var db = mongoose.createConnection('localhost', 'authTest');
var authSchema = mongoose.Schema({
username: 'string',
password: 'string'
});
var User = db.model('users', authSchema);
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
app.post('/login',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login/error',
})
);
및
var mongoose = require('mongoose');
var db = mongoose.createConnection('localhost', 'authTest');
var authSchema = mongoose.Schema({
username: 'string',
password: 'string'
});
var User = db.model('users', authSchema);
exports.index = function(req, res){
User.find(function (err, list) {
res.render('login', { title: 'Usernames and Passwords', users: list,msg:""});
});
};
을 login.js :
은 내가 잘못이
app.js (I는 불필요한 코드를 제거) 무엇 확실하지 않다
시간 내 주셔서 감사합니다.
감사합니다 :) 지금 작동합니다. –
다른 질문이 있습니다. 책이나 리소스를 사용하여 Node.js를 더 잘 배울 수 있습니까? –
@MuhammadSaleh Node.JS 책을 모른다. 나는 끊임없이 인터넷 검색을 통해 모든 것을 배웠다. [Node.JS 기본 페이지] (http://nodejs.org/)에서 자습서로 시작하십시오. 그리고 나서 그냥 구글. Stackoverflow는 훌륭한 지식의 원천이기도합니다. 그것이 내가 그것을 배운 방법입니다. – freakish