Struts2 серьезная проблема безопасности?

Я работаю со Struts2, Hibernate и Spring и использую модель управляемой модели. Кажется, что существует серьезная проблема при попытке получить объект одновременно с двумя разными пользователями и сессиями (также с разными компьютерами).

Подробнее... Допустим, у нас есть объект Project, который имеет 2 члена - user и name. Оба пользователя будут пытаться получить свой объект Project (который, разумеется, является другим объектом для другого пользователя). Таким образом, у пользователя А будет проект с идентификатором 498, а у пользователя Б - проект с идентификатором 499.

Действие Struts распознает, что они пытаются получить объект с другим ID, но кажется, что оба пользователя имеют один и тот же экземпляр объекта Project, и поэтому они видят один и тот же результат. Вы можете увидеть в журнале, представленном здесь:

2011-12-08 14:07:21 LoginInterceptor [INFO] Пользователь 17 вызывает populateProject, params: id=499 2011-12-08 14:07:21 LoginInterceptor [INFO] Пользователь 4 вызывает populateProject, params: id=498 2011-12-08 14:07:21 ProjectAction [INFO] Obj: hbn.Project@e2df60d, идентификатор пользователя сессии - 17, obj.user.id - 4 2011-12-08 14:07:21 ProjectAction [INFO] Obj: hbn.Project@e2df60d, идентификатор сеанса пользователя равен 4, obj.user.id равен 4

Как я мог решить это?

Спасибо, Рон.

1 ответ

Решение

В соответствии с обсуждением мы публикуем причину проблемы и ее решение. Область действия не была установлена ​​для действия, создаваемого плагином Spring, и по умолчанию они имеют область действия singleton, В Struts2 каждое действие также работает как объект домена, поэтому Struts2 всегда создает новый экземпляр действия для каждого запроса и помещает его в стек значений.

в вышеприведенном случае объем был singleton и которая была причиной проблемы, поскольку оба пользователя имеют одинаковый объект действия, передаваемый пружиной из-за singleton scope.Setting scope=prototype решенная проблема

для более подробной информации обратитесь к официальной странице плагина

Struts2-Spring плагин

Другие вопросы по тегам