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

时间:2016-04-26 19:20:30

标签: node.js passport.js koa passport-local

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

如何将这两者结合使用?

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

1 个答案:

答案 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需要通过会话管理身份验证。