You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis集成异常:接入后Access Token失效且Redis无法初始化

GitHub Passport应用添加Redis会话存储后初始化失败

原本正常运行的GitHub Passport策略应用,在引入Redis存储会话令牌后出现错误,Redis无法完成初始化。

错误信息

Redis连接失败,相关报错见截图(原链接已移除)

依赖配置

{
  "name": "employee-directory",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "seed": "node db/seeds.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "connect-redis": "^6.1.3",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "express-session": "^1.17.3",
    "helmet": "^5.1.0",
    "multer": "^1.4.5-lts.1",
    "passport": "^0.6.0",
    "passport-github2": "^0.1.12",
    "pg": "^8.5.1",
    "redis": "^4.2.0"
  }
}

Redis配置文件

const redis = require('redis');
require('dotenv').config();

const redisClient = redis.createClient({
  port: process.env.REDPORT
});

redisClient.on('error', function (err) {
  console.log('Could not establish a connection with redis. ' + err);
});

redisClient.on('connect', function (err) {
  console.log('Connected to redis successfully');
});

module.exports = redisClient;

session.js 配置

require('dotenv').config();
const session = require('express-session');
const crypto = require('crypto');
const RedisStore = require('connect-redis')(session);
const redisClient = require('./redis');

const serverSession = session({
  genid: function (req) {
    return crypto.randomBytes(32).toString('hex');
  },
  store: new RedisStore({ client: redisClient }),
  resave: false,
  saveUninitialized: false,
  secret: process.env.SESSION_SECRET,
  cookie: { maxAge: 600000, secure: false },
});


module.exports = serverSession;

passport.js 配置

require('dotenv').config();
const passport = require('passport');
const { Person } = require('../models');
const GitHubStrategy = require('passport-github2').Strategy;
const { hash } = require('../utils/crypto');

passport.serializeUser((user, done) => {
    done(null, user);
  });
  
  passport.deserializeUser((user, done) => {
    done(null, user);
  });

  passport.use(
    new GitHubStrategy(
      {
        clientID: process.env.GITHUB_CLIENT_ID,
        clientSecret: process.env.GITHUB_CLIENT_SECRET,
        callbackURL: process.env.GITHUB_CLIENT_CALLBACK_URL,
      },
  
      async function (accessToken, refreshToken, profile, done) {
        try {
          const hashedId = hash(profile.id.toString());
  
          const { rowCount, rows } = await Person.findUser({
            github_id: hashedId
          });
  
          if (rowCount > 0) {
            return done(null, rows[0]);
          } else {
            return done(null, { github_id: hashedId });
          }
        } catch (err) {
          console.log(err);
        }
      }
    )
  );

server.js 入口文件

require('dotenv').config();
const express = require('express');
const path = require('path');
const helmet = require('helmet');
const passport = require('passport');

const routes = require('./controllers');
const ContentSecurityPolicy = require('./config/helmet');
const serverSession = require('./config/session');
const hotlink = require('./utils/hotlink');
const app = express();
const PORT = process.env.PORT || 3001;
require('./config/passport');

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Enable the content security policy
app.use(ContentSecurityPolicy);
app.use(
  helmet.referrerPolicy({
    policy: 'no-referrer',
  })
);
app.use(helmet.noSniff());
// enable this if you run behind a proxy (e.g. nginx)
// app.set('trust proxy', 1);
app.use(serverSession);
app.use(passport.initialize());
app.use(passport.session());
app.use(hotlink);

app.use(express.static(path.join(__dirname, '/public')));

// turn on routes
app.use(routes);

app.listen(PORT, () => {
  console.log(`Server started on port: ${PORT}`);
});

本人仍在学习阶段,若问题描述有疏漏请见谅,如需更多信息可告知。

内容的提问来源于stack exchange,提问作者ifeasome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 04:24:23