如何在春季
问题描述:
创建一个数据改变形式
我试图创建一个表单给用户改变它在我的web应用程序自己的私人数据(地址,年龄...):如何在春季
-
视图:
public class UserDetailsView { private Long userId; private String name; ... }
在表单页面加载我所有的用户数据表单视图,然后发送加载视图Thymeleaf并创建最终的HTML的
@GetMapping
,这一切proccess工作正常。 我的问题是:
出于显而易见的原因,形式不具有的一个字段userId
变量,我并不想创建一个隐藏字段的ID,以避免恶意用户那可以很容易地改变userId
字段。
- 我的问题是:
如何保持在服务器端相同UserDetailsView
实例来保持userId
变量的内容,只是改变形式相关领域的变量?实际上,我的解决方案是在数据库中搜索记录的用户以获取它的ID,然后更新UserDetails表。
答
如果用户只能更改与自己相关的数据,只需在会话中保留userId(以及可能在应用程序中需要的其他用户详细信息)即可。
答
首先,如果你想提交你应该使用POST方法的形式 @GetMapping是由注释,为@RequestMapping(method = RequestMethod.GET)
快捷方式的行为,你应该在你的控制器的方法可以用什么像
@RequestMapping(value = "/update", method = RequestMethod.POST)
其次,试图更新他的详细信息的用户应该已经登录并进行身份验证。它不应该来自形式。这里是如何开始使用Spring Security的
How to get the current logged in user object from spring security?
但对于其他类型的数据,而不是用户信息登录的用户的例子吗?例如:用户想要改变来自“1-n”关系的一个寄存器的数据,就像其中一本书的描述一样。我不知道我是否清楚 –