我有一个处理应用程序身份验证的身份验证中间件,有几个检查案例,每个检查都有相同的逻辑,以防出现错误:
res, err := doSomeCheck()
if err != nil {
log.Println("Authentication failed: %v", err)
json.NewEncoder(w).Encode(struct {Error string}{Error: "something is broke!"})
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusForbidden)
return
}
我想用一些这样的函数编写这个逻辑(每种情况之间的唯一区别是错误和客户端消息):
func authError(w http.ResponseWriter, err error, clientMsg string) {
log.Println("Authentication failed: %v", err)
json.NewEncoder(w).Encode(struct {
Error string
}{Error: clientMsg})
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusForbidden)
return
}
但不是指针(我没有将其作为中间件处理程序的指针获取),因此我无法从函数中更改它,也不会更改实际响应。我怎样才能优雅地完成这项工作?wauthError()
www说
慕斯王
随时随地看视频慕课网APP
相关分类