登录
首页 >  Golang >  Go问答

设计Go Graphql身份验证方案

来源:stackoverflow

时间:2024-02-15 12:03:23 400浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《设计Go Graphql身份验证方案》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我正在使用 gqlgen、gorm 和 chi 在 go 中创建 graphql api。 我已经使用架构和解析器成功创建了基本逻辑,但我在身份验证方面遇到了问题。

我想使用 JWT 来验证用户身份。

我知道我必须使用中间件来实现这一点,但在我看到的示例中,中间件允许访问未经身份验证的用户(以允许他们访问登录和 createUser 查询),因此它只会阻止错误的 JWT。 然后,他们在每个解析器函数中对上下文(存储 JWT 的位置)进行检查,以查看用户是否已通过身份验证。

这是我的问题:有没有比在每个解析器函数开头调用 isAuthenticated 函数更好的方法?

我还考虑过创建第二个 enpoint (/login),它只处理 logincreateUser 查询,但这有点破坏了 graphql 的整体意义。


正确答案


在每个解析器函数中使用中间件和 isAuthenticated 方法确实是我推荐的设计。

通常,当您有一个 API 时,您想要处理身份验证(用户是否存在)和授权(用户是否有权访问此数据?)。应在每个函数的解析器级别处理授权。
因此,我使用 userFromContext() 来返回具有授权级别的用户信息,而不是 isAuthenticated() 方法。

终于介绍完啦!小伙伴们,这篇关于《设计Go Graphql身份验证方案》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>