gpt4 book ai didi

session - 从多错误类型中检测特定错误

转载 作者:IT王子 更新时间:2023-10-29 01:37:40 24 4
gpt4 key购买 nike

尝试区分错误的用户 cookie 错误与使用 gorilla/sessions 的内部错误,例如

import "github.com/gorilla/sessions"

sess, err := store.Get(r, sessName)
if err != nil {
// either user error (bad-cookie i.e. invalid HMAC)
// http.Error(w, "not authenticated", http.StatusUnauthorized)

// or server error (FileSystemStore i/o)
// http.Error(w, "internal error", http.StatusInternalServerError)
return
}

底层 securecookie 包有一个错误用户 cookie 的导出错误 ErrMacInvalid。所以通常人们只会检查这个特定的错误,但这确实工作:

import "github.com/gorilla/securecookie"

if err == securecookie.ErrMacInvalid {
// bad user-cookie
} else if err != nil {
// otherwise internal error
}

它不起作用的原因 - 使用 securecookie.NewCookieStore() 作为 session 存储 - 是它会返回 securecookie.MultiError 类型的错误 ([]error 类型),错误片段中列出了 securecookie.ErrMacInvalid 值。

尝试这样的事情看起来很复杂:

if e2, ok := err.(securecookie.MultiError); ok && len(e2) > 0 && e2[0] == securecookie.ErrMacInvalid { {
// bad user-cookie
} else if err != nil {
// otherwise internal error
}

有没有更简单的方法?

最佳答案

is there an easier way?

没有。对不起。

关于session - 从多错误类型中检测特定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55031499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com