を持っていません:)の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'
ルート/ login.js
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:""});
});
};
で
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',
})
);
と今:私は間違って
app.js(私は不要なコードを削除)だかわからないんだけど
お時間をありがとう。
感謝:)あなたは..あなたは、Node.jsのより良い学ぶために私に本や任意のリソースをお勧めすることができます可能性がある場合、それは今 –
もう一つの問題に動作しますか? –
@MuhammadSaleh私はNode.JS本を知らない。私は絶えずグーグルですべてを学んだ。 [Node.JSメインページ](http://nodejs.org/)のチュートリアルから始めてください。それからちょうどGoogle。 Stackoverflowは知識の素晴らしいソースです。それは私がそれを学んだ方法です。 – freakish