为了账号安全,请及时绑定邮箱和手机立即绑定

带有 cookie 身份验证的 Gorilla websocket

带有 cookie 身份验证的 Gorilla websocket

Go
江户川乱折腾 2021-09-27 14:23:54
这是我的设置:我正在构建一个带有用户登录的服务(使用 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 注释的代码行中起作用。


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信