2017-02-15 11 views
1

Я пытаюсь создать форму пользователю изменять свои собственные личные данные (адрес, возраст ...) в моем веб-приложение:Как создать форму переделка данных весной

  • мнение :

    public class UserDetailsView { 
    
        private Long userId; 
        private String name; 
        ... 
    } 
    

    В @GetMapping страницы формы I загрузит все пользовательские данные в виде формы, а затем отправить загруженный вид Thymeleaf и создать окончательный HTML, все это proccess работает нормально.

  • Моя проблема:

По очевидным причинам, форма не имеет поля переменной userId, и я не хочу, чтобы создать скрытое поле с идентификатором, чтобы избежать злонамеренных пользователей который может легко изменить поле userId.

  • Мой вопрос:

Как сохранить тот же экземпляр UserDetailsView на стороне сервера, чтобы сохранить переменную содержимое userId, только изменяя переменные, связанные с поля в форме? Фактически мое решение выполняет поиск в базе данных для зарегистрированного пользователя, чтобы получить его идентификатор, а затем обновить таблицу UserDetails.

ответ

0

Если пользователи могут изменять только связанные с ними данные, просто сохраните userId (и, возможно, остальные данные пользователя, которые могут возникнуть в приложении) в сеансе.

+0

Но для других типов данных вместо информации о пользователе? Пример. Пользователь хочет изменить данные одного регистра, который связан с отношением «1-n», например, описание одной из его книг. Я не знаю, ясно ли я –

0

первую очередь, если вы пытаетесь представить форму, которую следует использовать метод POST @GetMapping является сочинял аннотацию, которая действует в качестве ярлыка для @RequestMapping(method = RequestMethod.GET)

, что вы должны использовать на вашем методе контроллера является что-то вроде

@RequestMapping(value = "/update", method = RequestMethod.POST) 

Во-вторых, пользователь, который пытается обновить свои данные, должен быть уже зарегистрирован и аутентифицирован. это не должно происходить из формы. Вот пример того, как получить пользователь вошедшие с помощью пружинной безопасности

How to get the current logged in user object from spring security?