WebSocket 接続には、組み込みの承認処理がないため、別の認証メカニズムが必要です。 HTTP ミドルウェアを介して認証を実装すると、このセキュリティ上の懸念に対処できます。
提案 1: アップグレード ハンドシェイクの認証
この提案では、 HTTP 経由で最初の認証 GET リクエストを送信するコードですが、WebSocket プロトコル経由の後続のアップグレード リクエストが確実に受け入れられるようにします。以下のコードは、元の実装の欠陥を修正します。
<code class="go">// server middleware func wsHandler(rw http.ResponseWriter, req *http.Request) { if req.Header.Get("Upgrade") != "websocket" { return } if !websocket.IsWebSocketUpgrade(req) { return } conn, err := upgrader.Upgrade(rw, req, nil) if err != nil { http.Error(rw, "upgrade failed", http.StatusBadRequest) return } // rest of authentication logic }</code>
提案 2: 接続後に認証情報を確認する
この提案では、 WebSocket 接続が確立された後のクライアント。実装には以下が含まれます:
HTTP ミドルウェア経由で WebSocket 接続を認証するには、サーバー側とクライアント側の両方の変更が必要です。これらの変更を正しく実装すると、認証とプロトコル準拠の両方が保証されます。
以上がHTTP ミドルウェアを使用して WebSocket 接続を認証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。