大猩猩websocket与cookie身份验证

时间:2015-03-29 00:27:22

标签: cookies go websocket gorilla

以下是我的设置:我使用用户登录构建服务(使用Negroni和Gorilla),登录后,用户获取会话cookie,服务器使用该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 个答案:

答案 0 :(得分:1)

服务器将WebSocket握手作为普通的HTTP请求处理,直到调用Upgrade。使用您用于普通HTTP请求的任何身份验证。

Gorilla软件包在代码行中没有使用auth评论。