{"title":"Golang WebSocket 实现 Token 校验和验证失败处理","description":"使用 Golang 和 Gorilla WebSocket 库实现 WebSocket 连接,并进行 Token 校验。代码示例展示了如何从请求头获取 Token,验证其有效性,以及在验证失败时如何向客户端发送关闭消息并断开连接。","keywords":"Golang, WebSocket, Gorilla WebSocket, Token 校验, 验证失败处理, WebSocket 连接, 客户端关闭消息","content":"package main\n\nimport (\n\t"fmt"\n\t"log"\n\t"net/http"\n\n\t"github.com/gorilla/websocket"\n)\n\nvar upgrader = websocket.Upgrader{\n\tCheckOrigin: func(r *http.Request) bool {\n\t\t// 允许所有来源的连接\n\t\treturn true\n\t},\n}\n\nfunc main() {\n\thttp.HandleFunc("/", handleWebSocket)\n\tlog.Fatal(http.ListenAndServe(":8080", nil))\n}\n\nfunc handleWebSocket(w http.ResponseWriter, r *http.Request) {\n\t// 升级HTTP连接为WebSocket连接\n\tconn, err := upgrader.Upgrade(w, r, nil)\n\tif err != nil {\n\t\tlog.Println("Upgrade error:", err)\n\t\treturn\n\t}\n\tdefer conn.Close()\n\n\t// 校验并验证Token\n\tvalidToken := "your_valid_token" // 用你自己的有效Token替换这里\n\ttoken := r.Header.Get("Token")\n\tif token != validToken {\n\t\tlog.Println("Invalid token:", token)\n\t\terr = conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.ClosePolicyViolation, "Invalid token"))\n\t\tif err != nil {\n\t\t\tlog.Println("Write close message error:", err)\n\t\t}\n\t\treturn\n\t}\n\n\t// WebSocket连接已建立,可以进行后续操作\n\tfor {\n\t\t// 读取客户端发送的消息\n\t\t_, msg, err := conn.ReadMessage()\n\t\tif err != nil {\n\t\t\tlog.Println("Read message error:", err)\n\t\t\tbreak\n\t\t}\n\t\tfmt.Printf("Received message: %s\n", msg)\n\n\t\t// 发送消息给客户端\n\t\terr = conn.WriteMessage(websocket.TextMessage, []byte("Hello, client!"))\n\t\tif err != nil {\n\t\t\tlog.Println("Write message error:", err)\n\t\t\tbreak\n\t\t}\n\t}\n}\n"}

Golang WebSocket 实现 Token 校验和验证失败处理

原文地址: https://www.cveoy.top/t/topic/p1TI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录