你好
我有按预期工作的通用 Play WebSocket 方法,但我需要对用户进行身份验证。不幸的是,当尝试使用最简单的方法来识别该方法中的用户时:
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 连接每个用户,也不能防止恶搞。
我应该如何对用户进行身份验证并防止欺骗攻击?