Я разрабатываю Spring MVC webapp, используя также весеннюю безопасность. Таким образом, каждый аутентифицированный пользователь имеет указанный ROLE.Доступ к свойствам объектов на основе роли пользователя
Основываясь на этом ROLE, пользователь может изменить только подмножество свойств объекта.
Теперь я пытаюсь достичь этого, используя весенние теги безопасности в представлениях и отображая немодифицируемое поле с скрытым типом ввода, основанным на роли зарегистрированного пользователя. Но я думаю, что скоро это станет кошмаром!
В качестве простого примера, я что-то вроде этого (администратор может изменять все, пользователь может изменить только value1 и гость не может изменить):
<sec:authorize access="hasRole('ROLE_ADMIN')">
Value1: <input type="text" name="value1" value="${entity.value1}" />
Value2: <input type="text" name="value2" value="${entity.value2}" />
</sec:authorize>
<sec:authorize access="hasRole('ROLE_USER')">
Value1: <input type="text" name="value1" value="${entity.value1}" />
Value2: ${entity.value2}
<input type="hidden" name="value2" value="${entity.value2}" />
</sec:authorize>
<sec:authorize access="hasRole('ROLE_GUEST')">
Value1: ${entity.value1}
Value2: ${entity.value2}
<input type="hidden" name="value1" value="${entity.value1}" />
<input type="hidden" name="value2" value="${entity.value2}" />
</sec:authorize>
Какие альтернативные подходы можно предпринять для того, чтобы держать вещи, как как можно проще?
Спасибо Marco
Вы можете показать примеры пару? –
Я добавил простой пример кода – gipinani
Как комментарий - обратите внимание, что вам также нужно дважды проверить, были ли изменены только разрешенные поля в бэкэнде, иначе злонамеренный пользователь может подделать запрос формы POST и добавить поля, которые изначально не отображались в форма. –