rest - 如何将 UINT(不是 uint64 或 uint32)与字符串进行比较

标签 rest go

关闭。这个问题需要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_iduint在与另一个单位比较之前。

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/

相关文章:

javascript - 将 JSON 从 javascript 发送到 REST 并将内容添加到数据库

go - Golang 中多个程序之间的交互

go - 在 Go 中生成 Bash Shell

json - 使用 REST (HTTP) 的基于角色的访问控制?

java - 无法使用 Jackson 处理 JAXB 注释

python - 从托管网站调用服务器上的本地 api

c# - 如何使用注释覆盖同一方法上的 Web api 路由

c++ - 如何在VSCode中分析功能的性能

go - 解析字符串返回月份超出范围错误

search - 包含 slice 的结构集