广告
返回顶部
首页 > 资讯 > 精选 >怎么用gitignore中间件避免网络请求携带登录信息
  • 694
分享到

怎么用gitignore中间件避免网络请求携带登录信息

2023-07-02 11:07:49 694人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“怎么用gitignore中间件避免网络请求携带登录信息”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用gitignore中间件避免网络请求携带登录信息”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来

本文小编为大家详细介绍“怎么用gitignore中间件避免网络请求携带登录信息”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用gitignore中间件避免网络请求携带登录信息”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    协同开发时本地测试

    昨天的文章中提到了Go如何优雅的进行本地测试,今天分享一下:在多人协同开发中,如果大家都进行本地测试可能会出现的问题。

    最大的问题就是git合并的问题,大家都改这个test文件,就会导致有冲突。

    我们可以通过把test文件加到.gitignore中来解决这个问题。

    比如,我的测试文件所在目录是:app/system/script/test.go。 我就在.gitignore中添加:

    app/system/script/test.go

    这样我们就不用浪费时间在解决git冲突上了。

    GoFrame如何优雅的获得方法名

    今天又发现一个优雅的记录错误日志的神器:runtime.Caller(0)

    我们可以通过这个命令动态获取对应的方法,从而灵活的记录错误日志,方便跟踪定位问题。

    示例如下:

    shared.apiLog()中第三个参数就是动态获取的方法名。

    //上下架func (s *goodsService) Shelves(req *goods_unify.DoShelvesReq, r *gHttp.Request) (err error) {   defer func() {      if err != nil {         funcName, _, _, _ := runtime.Caller(0)         shared.ApiLog(r, "error/client_server_goods", runtime.FuncForpc(funcName).Name(), err.Error())      }   }()   err = service.GoodsUnify.DoShelves(r.Context(), req)   if err != nil {      return   }   return}

    巧用中间件

    比如在登录之后将登录信息写到上下文中,避免每次请求都携带登录信息。

    中间件在登录之后设置关键信息到context上下文中

    package middilewareconst (   CtxAppKey         = "AK"   CtxAppID          = "app_id"   CtxChannel        = "channel_id")var Middleware = middlewareShared{}type middlewareShared struct {}func (s *middlewareShared) Sign(r *ghttp.Request) {   code = checkSignV2(r)   r.Middleware.Next()}func checkSignV2(r *ghttp.Request) (code tools.Code) {   code, appKey, applicationInfo, sign, parmas := getSignv2Params(r)   if 1 != code.Code {      return   }   bodyBytes, err := ioutil.ReadAll(r.Request.Body)   if nil != err {      code = code.UnKnow()      return   }   r.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes)) // 关键点   signRight, signParam := createSignV2(applicationInfo.Data.SecreTKEy, parmas, string(bodyBytes))   if signRight != sign {      code = code.SignErr("算法错误")      return   }   r.SetParam("appKey", appKey)   r.SetParam("appId", applicationInfo.Data.Id)   r.SetCtxVar(CtxAppID, applicationInfo.Data.Id)   r.SetCtxVar(CtxChannel, applicationInfo.Data.ChannelId)   return}

    业务逻辑直接通过context直接取值

    通过r.Context().Value()获取数据:

    //校验请求方权限func checkLevel(r *ghttp.Request) (err error) {   if GConv.Int(r.Context().Value(middileware.CtxChannel)) !=10 {      err = errors.New("没有权限")      return   }   return}

    读到这里,这篇“怎么用gitignore中间件避免网络请求携带登录信息”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: 怎么用gitignore中间件避免网络请求携带登录信息

    本文链接: https://www.lsjlt.com/news/341680.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 怎么用gitignore中间件避免网络请求携带登录信息
      本文小编为大家详细介绍“怎么用gitignore中间件避免网络请求携带登录信息”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用gitignore中间件避免网络请求携带登录信息”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
      99+
      2023-07-02
    • 协同开发巧用gitignore中间件避免网络请求携带登录信息
      目录协同开发时本地测试GoFrame如何优雅的获得方法名巧用中间件中间件在登录之后设置关键信息到context上下文中业务逻辑直接通过context直接取值case when总结协同...
      99+
      2022-11-13
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作