我应该将JWT存储在Redis中吗?

时间:2019-08-16 12:00:47

标签: node.js authentication redis jwt apollo-server

我希望有一个功能可以在我的应用程序(反应网络应用程序 Android应用程序”中显示用户的当前会话(用户已登录的所有设备),这样他们就可以终止其他会话,或者如果他们行为不当,也可以将其注销。

以前,我在android中使用过JWT,要撤销用户令牌并不容易。

我现在正在使用 Redis 作为全新项目中的会话存储,该项目在网络上正常工作,但是我想知道 Android 应用程序该怎么做,因为我在以前的项目中,曾经在标头中使用JWT并使用express-jwt对其进行验证。

我最担心的是

  1. 我应该使用JWT并将它们存储在Redis中吗?
  2. if(1)如何正确使用Redis检查Web和android应用程序的登录名。
  3. 能够找到并终止特定会话。

目前,我将ioredis用作Redis客户端,将express-sessionconnect-redis一起使用。我将userId会话存储在 loginResolver 中,就像

req.session!.userId = id;
// Should i store JWT?

server.ts

    app.use(
        session({
            store: new RedisStore({
                client: redis as any,
                logErrors: true
            }),
            name: COOKIE_NAME,
            secret: config.get('session_secret'),
            resave: false,
            saveUninitialized: false,
            cookie: {
                httpOnly: true,
                secure: process.env.NODE_ENV === "production",
                maxAge: 1000 * 60 * 60 * 24 * 365 // 1 year
            }
        })
    );

服务器和应用程序由Apollo Stack(Apollo serverApollo androidApollo client)提供动力

0 个答案:

没有答案