登录
首页 >  Golang >  Go问答

将 2 个对象传递给处理程序的正确解决方案是什么

来源:stackoverflow

时间:2024-04-11 10:48:36 481浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《将 2 个对象传递给处理程序的正确解决方案是什么》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

每个请求中都需要传递一个json对象来检查身份验证

为此,我使用 gorilla 包

func middlewareFirstAuthCheck(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Println("middlewareFirstAuthCheck - Before Handler")


next.ServeHTTP(w, r)

})
}

func StandartHandler(w http.ResponseWriter, r *http.Request) {


}

在标准处理程序中我接受 json 对象,在 middlewarefirstauthcheck 中我接受不同的 json 对象

首先执行middlewarefirstauthcheck

了解需要做什么,但如何正确实施?


正确答案


请记住,此函数内运行的代码对于多路复用器服务器来说并不安全:

func middlewarefirstauthcheck(next http.handler) http.handler {
    // don't manage something related to request if you have a mux server
    return http.handlerfunc(func(w http.responsewriter, r *http.request) {
        log.println("middlewarefirstauthcheck - before handler")
        // you could get the r.body or r.headers here to get the user authenticated
        next.servehttp(w, r)
    })
}

理想情况下,如果您想处理权限,您应该根据端点的范围在中间件上设置它们。像这样的东西:

// please don't mind the terrible function/variable names
router.Get("/url", authMiddlewareForScope(s.handleTask(), "scope:to:handle:task"))

如果您希望应用程序可以配置此角色,您将需要一个更优雅的解决方案。

如果有请告诉我

到这里,我们也就讲完了《将 2 个对象传递给处理程序的正确解决方案是什么》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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