我创建了一个使用护照和本地身份验证策略的Koa应用程序。我想使用模块koa-generic-session,因此我可以将会话数据存储在Redis中。
如何将这两者结合使用?
我发现这个回复做了这个,但它似乎并没有真正使用会话,我不确定它是否正确:https://github.com/dozoisch/koa-react-full-example
答案 0 :(得分:3)
(免责声明:我不熟悉Koa,但我使用Express和Passport。)
我查看了您提供的链接,以及他们如何使用koa-generic-session和护照。
在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行是传统的护照配置文件,它只是设置序列化和反序列化 第40行引入koa.js并将app,配置文件和护照变量传递给它。
以下代码来自koa.js:
04 - const session = require("koa-generic-session");
18 - app.keys = config.app.keys;
查看koa.js,将koa-generic-session分配给变量会话。稍后在此处调用此变量:
35 - app.use(session({
36 - key: "koareactfullexample.sid",
37 - store: new MongoStore({ url: config.mongo.url }),
38 - }));
在第18行,app.keys
被初始化为koa-generic-session要求的文档。虽然您链接的项目使用MongoStore和koa-generic-session,但您可以使用koa-redis构造函数替换该构造函数,如koa-generic-session文档中所示。
最后,Passport已初始化:
41 - app.use(passport.initialize());
42 - app.use(passport.session());
此代码与使用Passport with Express类似,因为Passport需要通过会话管理身份验证。