Cloudant가 포함 된 빠른 애플리케이션을 내 DB로 만들었습니다. 여권을 인증 미들웨어로 사용합니다. 그래서 기본적으로 메모리 내 세션 저장소를 제공합니다. 그래서 응용 프로그램을 다시 시작할 때마다 세션이 파괴됩니다.req.user의 cloudant connect 결과가있는 세션 저장소가 여권 로컬 전략에서 발견되지 않습니까?
그래서 connect-cloudant와 같은 세션 저장 메커니즘을 사용해야합니다.
app.js에서 myaccount route가 활성화되었을 때 req.user 또는 req.isAuthenticated()가 표시되지 않습니까? 내가 코드를 cloudant-연결하고 메모리 세션 저장소에 기본으로 시도 제거하면 , 나는 req.uesr을 얻을 수 오전 req.isAuthenticated
는
var https = require("https");
var fs = require("fs");
var express = require("express");
var app = express();
var cookieParser = require("cookie-parser");
var session = require("express-session");
var CloudantStore = require('connect-cloudant')(session);
var passport = require("passport");
var strategy = require("passport-local").Strategy;
var path = require("path");
var bodyParser = require("body-parser");
var cons = require('consolidate');
var config = require("./config");
var Cloudant_ip = config.CLOUDENT_IP;
var Cloudant = require('cloudant');
var cloudant = Cloudant(Cloudant_ip);
var Port = config.PORT;
var Local_ip = config.LOCAL_IP;
var cloudantStore = new CloudantStore({
url: Cloudant_ip,
databaseName: "sessions"
});
app.use(express.static("public/_attachments"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(session({
store: cloudantStore,
secret: 'cloudant',
cookie: {maxAge:24*60*60*1000}
}));
require("./src/config/passport")(app);
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
} else {
res.redirect("/");
}
}
app.engine('html', cons.swig);
app.set('views', path.join(__dirname, 'pages'));
app.set('view engine', 'html');
app.get("/",ensureLoginAuthenticated,function(req,res) {
res.render("index.html");
});
app.get("/myaccount",ensureAuthenticated,function(req,res) {
res.render("my-account.html");
});
https.createServer({
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
}, app).listen(Port,Local_ip, function() {
console.log("server is running on port "+Port);
});
passport.js app.js
내가 여기 뭔가를 놓치고있어 누군가가 도와 줄 수 있습니다.
답장을 보내 주셔서 감사합니다. 나는 하루 종일 뒤섞여서 서둘러 코드 스 니펫을 붙여 넣었다. 그 점을 지적 해 주셔서 감사합니다. –
방금 couchdb에서 cloudant로 이동했기 때문에 dbs가 복제됩니다. 왜 내가 그 접두사를 사용했는지. –
귀하의 의견에서 데이터베이스 이름을 변경하라는 겸손한 요청 –