关闭。这个问题需要debugging details .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
2年前关闭。
Improve this question
我编写了以下代码,并想检查 REST API 中键入的 URL 是否与 header 中的 user_id 相同以授予访问权限或返回失败消息,但出现以下错误:
“无效操作:userId != vars[“user_id”](不匹配的类型 uint 和字符串)”
func UserIdAutentication(w http.ResponseWriter,r *http.Request) {
id := r.Context().Value("user").(uint)
vars:=mux.Vars(r)
if userId != vars["user_id"] {
response := u.Message(false, "User not Autorized to fetch other users data")
w.WriteHeader(http.StatusForbidden)
w.Header().Add("Content-Type", "application/json")
u.Respond(w, response)
return
} else {
return
}
}
最佳答案
您应该转换 user_id
至uint
在与另一个单位比较之前。
id := r.Context().Value("user").(uint)
vars:=mux.Vars(r)
userID, err := strconv.ParseUint(vars["user_id"], 0, 64)
if err != nil {
// Do something with eror
}
if userId!=uint(userID){
response := u.Message(false, "User not Autorized to fetch other users data")
w.WriteHeader(http.StatusForbidden)
w.Header().Add("Content-Type", "application/json")
u.Respond(w, response)
return
}else {
return
}
关于rest - 如何将 UINT(不是 uint64 或 uint32)与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60364717/