这是我的设置:我正在构建一个带有用户登录的服务(使用 Negroni 和 Gorilla),在登录时,用户获得一个会话 cookie,服务器使用它来授权受保护的端点。受保护的端点之一允许用户/客户端打开与服务器的 websocket,如下所示:app := negroni.New()r := mux.NewRouter()r.HandleFunc("/auth/connection", func(rw http.ResponseWriter, req *http.Request) { // authorize request using req.Cookie("session_id") // create websocket conn, err := upgrader.Upgrade(rw, req, nil) if err != nil { panic(err) } defer conn.Close() // do stuff...})app.UseHandler(r)app.Run(":3000")但是,req.Cookies()始终为空,这意味着我无法授权任何请求"/auth/connection"——而且我几乎肯定这不是 websocket 客户端的问题(如果你很好奇,我正在使用这个 Python 包测试它:https ://github.com/liris/websocket-client)。我是否正确地接近了 websocket 的身份验证?任何帮助/建议将不胜感激!
1 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
服务器将 WebSocket 握手作为普通 HTTP 请求处理,直到调用 Upgrade 为止。使用您将用于普通 HTTP 请求的任何身份验证。
Gorilla 包不在带有 auth 注释的代码行中起作用。
- 1 回答
- 0 关注
- 257 浏览
添加回答
举报
0/150
提交
取消