尝试区分错误的用户 cookie 错误与使用gorilla/sessionseg 的内部错误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}它不起作用的原因 - 使用 say作为会话存储 - 是它将返回类型为securecookie.MultiError (一种类型)securecookie.NewCookieStore()的错误,其值列在错误片中。[]errorsecurecookie.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}有更容易的方法吗?
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消