如何在 koa-generic-session() 中使用护照?

How to use passport with koa-generic-session()?

我创建了一个 Koa 应用程序,它使用具有本地身份验证策略的护照。我想使用模块 koa-generic-session 以便我可以将会话数据存储在 Redis 中。

如何同时使用这两个?

我发现这个 repo 是这样做的,但它似乎并没有真正使用会话,我不确定它是否正确:https://github.com/dozoisch/koa-react-full-example

(免责声明:我不熟悉 Koa,但我熟悉 Express 和 Passport。)

我已经查看了您提供的 link,下面是他们如何使用 koa-generic-session with passport。

server.js文件中,以下几行是指配置Passport。

08 - const passport = require("koa-passport");
13 - const config = require("./config/config");

38 - require("./config/passport")(passport, config);
40 - require("./config/koa")(app, config, passport);

第38行是传统的passport配置文件,简单的设置了序列化和反序列化。
第 40 行引入 koa.js 并将应用程序、配置文件和通行证变量传递给它。

以下代码来自koa.js:

04 - const session = require("koa-generic-session");

18 - app.keys = config.app.keys;

查看koa.js,koa-generic-session赋值给变量session。这个变量后来在这里被调用:

35 -  app.use(session({
36 -      key: "koareactfullexample.sid",
37 -      store: new MongoStore({ url: config.mongo.url }),
38 -   }));

在第 18 行,app.keys 被初始化为 koa-generic-session calls for. While the project you linked uses a MongoStore with koa-generic-session, you can simply replace that constructor with a koa-redis constructor, as is shown in the koa-generic-session 文档的文档。

最后,Passport 被初始化:

41 - app.use(passport.initialize());
42 - app.use(passport.session());

此代码类似于将 Passport 与 Express 一起使用,因为这就是 Passport 通过会话管理身份验证所需的全部内容。