ellou '
期待どおりに機能する一般的なPlayWebSocketメソッドがありますが、ユーザーを認証する必要があります。残念ながら、メソッドでユーザーを識別する最も簡単な方法を試してみると、次のようになります。
public class Application extends Controller {
public static WebSocket<JsonNode> connect() {
return new WebSocket<JsonNode>() {
@Override
public void onReady(final WebSocket.In<JsonNode> in, final WebSocket.Out<JsonNode> out) {
User logged = User.findByUsername(Http.Context.current().request().username());
// ...
}
};
}
}
エラーが発生します:
java.lang.RuntimeException: There is no HTTP Context available from here.
私の現在の回避策は、ランダムで一意の識別子を渡して表示し、ユーザーモデルに保存することです。ビューからソケットに接続して、指定された識別子を持つユーザーを見つけることができますが、WebSocket接続は1つしかないため、これは完全ではありません。ユーザーごとに、またなりすましを防ぐことはできません。
ユーザーを認証し、なりすまし攻撃を防ぐにはどうすればよいですか?