Как сделать систему с синглтоном объекта-защитника (Guice + OWASP ESAPI)

StackOverflow https://stackoverflow.com/questions/9302450

Вопрос

В настоящее время я использую OWASP ESAPI для управления аутентификацией в своем веб -приложении Java, и я ввожу MyAuthenticator Singleton Myauthenticator Guice.injectmembers (это). Я хотел бы отойти от этого подхода и использовать объект, созданный в синглтоне. Мне понравилась безопасность нити эсапи синглтона и безопасность синглтонов в целом, используя двухпровернутую блокировку, идиому iodh или стиль экземпляра Bloch's Enum.

Что мне нужно сделать с моему гигицифуфицированному Singleton-Shoped Authenticator, чтобы сделать его безопасным, а также с потоком поля, которое я использую, чтобы получить и установить моего текущего пользователя?

Я хотел бы заставить все приложение работать с инъекцией зависимости, но не хочу, чтобы оно нарушало параллельный доступ к веб-приложению. Есть предложения или общие ловушки?

Threadlocal объект, который я использую, выглядит как код ниже:

private final ThreadLocalUser currentUser = new ThreadLocalUser();

private class ThreadLocalUser extends InheritableThreadLocal<User> {

    @Override
    public User initialValue() {
        return User.ANONYMOUS;
    }

    public User getUser() {
        return super.get();
    }

    public void setUser(User newUser) {
        super.set(newUser);
    }
}
Это было полезно?

Решение

К сожалению, я недостаточно знаю о Owasp Esapi, чтобы дать конкретный ответ, но вам может повезло, если вы рассмотрим поддержку Guice AOP. Вы можете перехватить все вызовы метода в классе и обеспечить любое поведение параллелизма, которое вам нравится.

http://code.google.com/p/google-guice/wiki/aop

Другие советы

Будьте осторожны, используя рисунок «Двойной контроль» в Java. Этот шаблон дизайна не надежно работает на Java (например, см. http://www.cs.umd.edu/~pugh/java/memorymodel/doublecheckedlocking.html) пока не Вы объявляете экземпляр Синглтона как "нестабильный".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top