Как аутентифицировать пользователя в Play& #39;s 2.0 WebSocket?

ellou'

у меня есть общий метод 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 для каждого пользователя, а также не предотвращает подделку.

Как аутентифицировать пользователя и предотвратить спуфинг?

8
задан biesior 7 May 2012 в 20:42
поделиться