0
私はWebプログラミングには新しく、私の学校のようなinstagramのようなものを開発しなければなりません。私たちはReactJSのフロントエンドを持っています。そして今、私たちは、ログ用のパスポートとすべてのデータベース用のDynamoDbを使用してnodeJS内のサーバーを開発しなければなりません(これはamazonサービス上に配備されます)。req.isAuthenticated()常にfalse、PassportJs + nodeJS + dynamoDb
私は今Passportで問題が発生しています。私はreq.isAuthenticated()
を呼び出すと常にfalseを返します。本当になぜそうはしません。 Index.js
const express = require('express');
const session = require('express-session');
const cookieParser = require('cookie-parser');
const flash = require('connect-flash');
const passport = require('passport');
...
const app = express();
...
app.use(cookieParser());
require('./common/passport')(passport);
app.use(session({
cookie : {
maxAge: 3600000, // see below
secure: false
},
secret: 'khugugjh',
resave: true,
saveUninitialized: true
})); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login
...
require('./controllers/sample-controller')(app, passport);
const port = process.env.PORT || 3000;
app.listen(port);
passport.jsついに
...
passport.serializeUser(function(user, done) {
done(null, user.email);
});
// used to deserialize the user
passport.deserializeUser(function(email, done) {
docClient.getItem({"TableName":tableName,"Key": {"email":{"S":email}}}, function(err,data){
if (err)
done(err,data);
else
done(err,data.Item)
})
});
...
passport.use('local-login', new LocalStrategy({
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true
},
function(req, email, password, done) {
email = req.body.email;
password = req.body.password;
var params = {
TableName: tableName,
Key:{
"email": email
}
};
docClient.get(params, function(err,data){
if (err){
return done(err);
}
if (isEmpty(data)){
return done(null, false, "KO"); // req.flash is the way to set flashdata using connect-flash
}
if (password != data.Item.password){
return done(null, false, "KO"); // create the loginMessage and save it to session as flashdata
}else{
return done(null, {email: data.Item.email});
}
});
}));
と:: サンプルcontroller.js
...
app.post('/login', passport.authenticate('local-login'), (req, res) => {
res.send("OK");
});
...
app.get('/profile', isLoggedIn, (req, res) => {
console.log("AUTHENTIFIE !");
});
function isLoggedIn(req, res, next) {
console.log(req.sessionStore.sessions);
if (req.isAuthenticated())
return next();
console.log("UNAUTHORIZED");
}
感謝 は、ここに私のコードですあなたの助けの男のために!
でパスポートを使用している場合、ローカルの戦略のためのスニペットがあり、私はすでに私の私のデータベースに接続してよ私のすべてのユーザーの情報が入ったテーブル "Users"があります。セッションをデータベースに保存する必要がありますか? – nicorivat