我创建了一个 Koa 应用程序,它使用具有本地身份验证策略的 Passport 。我想使用模块 koa-generic-session这样我就可以将 session 数据存储在 Redis 中。
如何同时使用这两者?
我发现这个 repo 是这样做的,但它似乎并没有真正使用 session ,我不确定它是否正确:https://github.com/dozoisch/koa-react-full-example
最佳答案
(免责声明:我不熟悉 Koa,但我熟悉 Express 和 Passport。)
我查看了您提供的链接,下面是他们如何将 koa-generic-session 与 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并将应用程序、配置文件和 Passport 变量传递给它。
以下代码来自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 的文档呼吁。虽然您链接的项目使用带有 koa-generic-session 的 MongoStore,但您可以简单地用 koa-redis 构造函数替换该构造函数,如 koa-generic-session 中所示。文档。
最后,Passport 被初始化:
41 - app.use(passport.initialize());
42 - app.use(passport.session());
此代码类似于将 Passport 与 Express 一起使用,因为这就是 Passport 通过 session 管理身份验证所需的全部内容。
关于node.js - 如何在 koa-generic-session() 中使用 Passport ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36873918/