現在、私はstomp、sockjs、spring-mvc、spring-securityでwebsocketを使用しているアプリケーションで作業しています。春のセキュリティを使用してwebsocket呼び出し中にユーザーのsessionidを取得する方法、購読するURLとユーザー情報を取得する
私が直面している問題は、UI(javascriptの部分)からstompとsockjsを使用してwebsocket呼び出しを行った後、同じ瞬間に応答が得られない、つまり応答が非同期になる可能性があるということです。今、Spring MVCの必要性から、バックエンドのコードは、実際にリソースのために要求したユーザーのそれ
- セッションIDのために要求しているだけで、その特定のユーザにUIに戻ってデータを送信するために、以下の3つの情報を知っています
- データを送信するユーザー
- 宛先URL。
上記の3つの情報は、どのクラスからもレスポンスを送信するために必要です。
simpMessagingTemplate.convertAndSendToUser("username", </queue/destination-url>, dataToSend, sesionId of the requesting user for constructing the header);
私はすでに、以下の方法を使用して試してみました:
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
RequestContextHolder.currentRequestAttributes().getSessionId()
は、これらの両方は、私がデータを返送する必要がありましたクラスでNPE
を与えます。 私は、春のセキュリティを使用してこれらの情報を取得する方法があるかどうか、またはこれを実装する他の方法があるかどうかを知りたかったのです。
他の情報が必要な場合はお知らせください。 事前にお手数をおかけしていただきありがとうございます。