对于我的后端,我使用Node.js,Express和GraphQL。我已经用jwt实现了身份验证,如果没有用户登录就会保护我的路由。问题是我想要一些不受保护的路由,即你不必登录就可以看到/home
。
由于我正在使用Express这个项目,我也有jwt-express,它们提供了类似这样的东西:.unless({path: ['/token']})
。现在,如果我有一个REST-API,这会有效,但是因为我有GraphQL和GraphQL只有一个路径不起作用。
我的index.js
文件中只包含此内容:
app.use(jwt({secret: constants.JWT_SECRET}))
app.use(
graphqlEndpoint,
bodyParser.json(),
graphqlExpress(async req => {
let user = null
if (req.user) {
user = await knex(‘users’).where(‘id’, req.user.id).first()
console.log(user)
}
return {
schema,
context: {user}
}
})
)
但是我必须确保它能让我进入,无论是否拥有或使用令牌。
所以我只是想知道是否有人有关于如何实现这一点的一些提示,因为我很困难。
答案 0 :(得分:1)
如果您使用app.use(jwt({secret: constants.JWT_SECRET}))
,它将在每个请求中读取JWT。有两个选项:
答案 1 :(得分:0)
您可以通过以下方式指定express-jwt以允许未注册的用户:
app.use(jwt({
secret: 'hello world !',
credentialsRequired: false
}));
来源:express-jwt' README.md https://github.com/auth0/express-jwt