From c7494d498f776abb9878e96228b90f6166073e3a Mon Sep 17 00:00:00 2001 From: dreambo8563 Date: Tue, 23 Jan 2018 22:38:41 +0800 Subject: [PATCH] fix(): fixed the issue which not store session into redis MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * user session 没有存入redis * 因为有issue,需要提前创建好redisclient,否则host 会被覆盖成127.0.0.1 https://stackoverflow.com/search?q=docker+redis+express+session https://github.com/luin/ioredis/issues/568 --- src/app/app.ts | 20 +++++++++++++++----- src/routes/todo.ts | 1 + 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/app/app.ts b/src/app/app.ts index 2c909ce..a28fa16 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -9,9 +9,14 @@ import { rootDir } from "../config/" import routes from "../routes" import * as session from "express-session" import * as connectRedis from "connect-redis" -const RedisStore = connectRedis(session) +import * as Redis from "ioredis" import { config as redisConfig } from "../redis/config" +// create the client because of the issue +// https://stackoverflow.com/search?q=docker+redis+express+session +// https://github.com/luin/ioredis/issues/568 +const RedisStore = connectRedis(session) +const redisClient = new Redis(redisConfig.port, redisConfig.host) const app = express() // view engine setup @@ -23,23 +28,28 @@ app.use(favicon(path.join(rootDir(), "public", "favicon.png"))) app.use(logger("dev")) app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: false })) -app.use(cookieParser()) +app.use(cookieParser(redisConfig.secret)) app.use( session({ name: redisConfig.name, secret: redisConfig.secret, - resave: true, saveUninitialized: true, + resave: true, cookie: redisConfig.cookie, + // @ts-ignore store: new RedisStore({ - host: redisConfig.host, - port: redisConfig.port + client: redisClient }) }) ) app.use(express.static(path.join(rootDir(), "public"))) // router bind +app.use("/", function(req, res, next) { + if (req.session.pageCount) req.session.pageCount++ + else req.session.pageCount = 1 + res.render("index", { title: JSON.stringify(req.session) }) +}) app.use("/api", routes.api) app.use("/debug", routes.debug) app.use("/tencent", routes.tencent) diff --git a/src/routes/todo.ts b/src/routes/todo.ts index 6ef2d2a..0a38648 100644 --- a/src/routes/todo.ts +++ b/src/routes/todo.ts @@ -9,6 +9,7 @@ const router = express.Router() router.post("/", async (req, res) => { let todoItem: Todo + console.log(req.session) try { todoItem = new Todo(req.body.name, req.body.description) // save it to db