客户端从服务器获取JWT - SocketIO,Express

时间:2018-06-15 13:04:22

标签: javascript socket.io jwt

我正在与JWT斗争,尤其是没有令牌的注册用户。我的意思是,第一个客户端与服务器的联系,我有用户的ID和密码,我想将它们发送到服务器并获取令牌。

客户方:

let token = null
let query = token ? { query: `auth_token=${token}` } : { query: `id=${id} }
const socket = io.connect(endpoint, query) 

和服务器端:

io.use(jwtAuth.authenticate(
    { secret, algorithm, succeedWithoutToken },
    (payload, done) => {
        if (payload.sub) {
            let sub = payload.sub
            return done(null, true)
        }
        else {
            let id = payload.id
            let token = jwt.sign({ sub: id }, secret)

            console.log('payload', payload)
            console.log('id', id)
            console.log('token', token)

            return done('no token specified', null, token)
        }
    })
)

当然,令牌是null,我们没有payload.sub,所以它执行else语句,但有效载荷是空对象,id是undefined

我现在明白id不能像那样实现,因为jwt payload是一个空对象,所以我的问题是:我怎样才能以其他方式传递id?

这是草案,首次尝试实施,但我无法理解如何实现......

在我尝试实现jwt之前,我通过查询传递了id,我可以从client.handshake.query.id

获取客户端

任何想法或想法? 提前谢谢!

0 个答案:

没有答案