passport-local-mongooseを使用して、/ registerフォームにPOSTを送信した後にユーザーを認証しようとしています。 私はいつも「無許可」になる理由を理解できません&データベース上にデータが奇妙に送信されていません(app.post( "/ register")から "passport.authenticate( 'local')を削除すると動作します)
?Passport-local-mongoose:登録後にユーザーを認証します
任意のアイデア
app.js:
// ====== Dependencies
var express = require('express');
bodyParser = require('body-parser');
validator = require('express-validator');
cookieParser = require('cookie-parser');
expressSession = require('express-session');
passport = require('passport');
LocalStrategy = require('passport-local').Strategy;
auth = require('./controllers/auth');
registration = require('./controllers/register');
User = require('./models/user');
// ====== Options
var app = express()
.use(bodyParser.urlencoded({ extended: false }))
.use(bodyParser.json())
.use(validator())
.set('view engine','ejs')
.use(express.static("views"))
.use(cookieParser())
.use(expressSession({
secret : 'soooosecret',
resave : true,
saveUninitialized : false
}))
.use(passport.initialize())
.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.post('/register', passport.authenticate('local'), registration.reg);
app.listen(8080);
console.log('Server running at 8080');
register.js:
のvar User = require('../models/user');
var reg = function (req, res) {
/* some form validation... */
var errors = req.validationErrors();
if (errors) {
res.render("register" , { errors : errors });
}
else {
var newUser = new User({
username : username,
password : password,
email : email,
tel : tel,
country : country
});
User.createUser(newUser);
}
}
module.exports = { reg : reg }
user.jsの:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mvpem');
var passportLocalMongoose = require('passport-local-mongoose');
var db = mongoose.connection;
var Schema = mongoose.Schema;
var UserSchema = new Schema({
username : String,
password : String,
email : String,
tel : Number,
country : String
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model('User', UserSchema);
module.exports.createUser = function(newUser) {
newUser.save();
}
こんにちは、私はメールアドレス、アドレスとユーザーのいくつかの他の詳細を保存したいので、私はすることができます他の部分で言及した方法をオブジェクト内に使用して、それをUser.registerで使用すると動作しますか?そして、新しいユーザーを作成するよりも、他の方法があります。 – Kannan
@ kannan私はあなたの質問を理解しているか分からない。上記のコードスニペットには、ユーザー名、電子メール、電話番号、国の4つのデータが格納されています。必要なデータを保存することができます。ユーザーモデルで定義する必要があります。これは、 'var User = require( '../ models/user');'という行でインポートされ、register.jsに格納されます。以前の4つのデータと同じようにユーザーを作成します。私はこれが助けて欲しい –
私は現在同じことをしており、私のコードはあなたの例にかなり似ています。しかし、登録が成功すると、MongoDBのユーザレコードにユーザ名とハッシュだけが保存されます。どのように私は実際にこの追加データをユーザーモデルからDBに保存し、このデータにどのようにアクセスできますか? –