【发布时间】:2023-03-20 13:11:01
【问题描述】:
对于我的后端,我使用 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}
}
})
)
但我必须确保它让我进入,无论是否使用令牌。
所以我只是想知道是否有人对如何实现这一点有一些提示,因为我很困惑。
【问题讨论】:
-
您能否与我分享您的方法,我在过去一周一直坚持这一点。如果我在中间件之前添加登录名(一个 graphqlExpress 但 graphql 端点相同),我将无法访问其他实体(其他 graphqlExpress 但端点 graphql 相同)。如果我在同一个 graphqlExpress 函数中添加错误是没有找到令牌,因为我在这里添加了中间件。 .我谷歌但没有关闭的解决方案。谢天谢地,我找到了你的帖子。请帮帮我,我被卡住了:(
-
@Tested 同上。关于这个或来源的任何解决方案?希望对此有一些指导。
标签: node.js express authentication jwt graphql