当前位置:首页 > 文章列表 > Golang > Go问答 > Beego - 我需要使用“context.Context”代替 Beego 上下文

Beego - 我需要使用“context.Context”代替 Beego 上下文

来源:stackoverflow 2024-03-25 09:03:30 0浏览 收藏

在使用 Beego 框架时,需要将 Beego 上下文替换为 "context.Context",以便与 Google OAuth2 库交互。Beego 上下文实例 "this.ctx" 无法直接传递给 OAuth2 库,因为它不是 "context.Context" 类型。解决方法是使用 "c.Ctx.Request.Context()",它可以获取与当前 HTTP 请求关联的 "context.Context"。此外,在函数参数中使用指针是不必要的,因为 "context.Context" 是一个接口。

问题内容

我正在尝试编写一个函数来验证 google id 令牌。

oauth2 包要求我在创建新服务时传递上下文,如下所示:

package services

import (
    "context"
    "google.golang.org/api/oauth2/v2"
)

func validatetoken(ctx *context.context, idtoken string) {
    // i need to pass context.context in to the oauth2 library
    oauth2service, err := oauth2.newservice(*ctx)
    tokeninfocall := oauth2service.tokeninfo()
    tokeninfocall.idtoken(idtoken)
    tokeninfo, err := tokeninfocall.do()

在 beego 中 this.ctx 是 beego 上下文模块的一个实例,所以这段代码无法编译:

func (c *tokencontroller) post(ctx *context.context) {
    requestparams := struct {
        google_id_token string
    }{}
    err := json.unmarshal(c.ctx.input.requestbody, &requestparams)
    // type mismatch
    services.validatetoken(c.ctx, requestparams.google_id_token)

如何获取需要传递到 oauth2 库的上下文?

编辑:我正在通过传入 context.background() 来解决它,但我不确定我是否完全理解它的副作用。我对 golang 还很陌生,感觉后台上下文应该只在“更高”级别使用?

func ValidateToken(idToken string) {
    ctx := context.Background()
    oauth2Service, err := oauth2.NewService(ctx)

正确答案


试试这个:c.Ctx.Request.Context()

也不要在函数 ValidateToken 中的 arg ctx 中使用指针,因为 stdlib 中的 context.Context 是接口

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Beego - 我需要使用“context.Context”代替 Beego 上下文》文章吧,也可关注golang学习网公众号了解相关技术文章。

版本声明
本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
学习Go语言数组方法的最佳实践:以实例为例学习Go语言数组方法的最佳实践:以实例为例
上一篇
学习Go语言数组方法的最佳实践:以实例为例
理解终端命令中的
下一篇
理解终端命令中的"./"参数含义
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    511次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    498次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • AI歌曲生成器:免费在线创作,一键生成原创音乐
    AI歌曲生成器
    AI歌曲生成器,免费在线创作,简单模式快速生成,自定义模式精细控制,多种音乐风格可选,免版税商用,让您轻松创作专属音乐。
    18次使用
  • MeloHunt:免费AI音乐生成器,零基础创作高品质音乐
    MeloHunt
    MeloHunt是一款强大的免费在线AI音乐生成平台,让您轻松创作原创、高质量的音乐作品。无需专业知识,满足内容创作、影视制作、游戏开发等多种需求。
    18次使用
  • 满分语法:免费在线英语语法检查器 | 论文作文邮件一键纠错润色
    满分语法
    满分语法是一款免费在线英语语法检查器,助您一键纠正所有英语语法、拼写、标点错误及病句。支持论文、作文、翻译、邮件语法检查与文本润色,并提供详细语法讲解,是英语学习与使用者必备工具。
    29次使用
  • 易销AI:跨境电商AI营销专家 | 高效文案生成,敏感词规避,多语言覆盖
    易销AI-专为跨境
    易销AI是专为跨境电商打造的AI营销神器,提供多语言广告/产品文案高效生成、精准敏感词规避,并配备定制AI角色,助力卖家提升全球市场广告投放效果与回报率。
    29次使用
  • WisFile:免费AI本地文件批量重命名与智能归档工具
    WisFile-批量改名
    WisFile是一款免费AI本地工具,专为解决文件命名混乱、归类无序难题。智能识别关键词,AI批量重命名,100%隐私保护,让您的文件井井有条,触手可及。
    29次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码