【问题标题】:How to create an data alteration form in Spring如何在 Spring 中创建数据更改表单
【发布时间】:2017-07-04 03:58:33
【问题描述】:

我正在尝试创建一个表单,让用户在我的 Web 应用程序中更改它自己的私有数据(地址、年龄...):

  • 观点:

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

    在表单页面的@GetMapping 中,我将所有用户数据加载到表单视图,然后将加载的视图发送到 Thymeleaf 并创建最终的 HTML,所有这些过程都运行良好。

  • 我的问题是:

由于显而易见的原因,表单没有 userId 变量的字段,我不想为 ID 创建隐藏字段以避免恶意用户可以轻松更改 userId 字段。

  • 我的问题是:

如何在服务器端保持相同的UserDetailsView实例来保持userId的变量内容,只需要修改表单中与字段相关的变量?实际上,我的解决方案是在数据库中搜索登录用户以获取其 ID,然后更新 UserDetails 表。

【问题讨论】:

    标签: java spring forms spring-mvc


    【解决方案1】:

    如果用户只能更改与他们自己相关的数据,只需将 userId(以及您可能在整个应用程序中可能需要的其他用户详细信息)保留在会话中即可。

    【讨论】:

    • 但是对于其他类型的数据而不是用户信息?示例:用户想要更改来自“1-n”关系的一个寄存器的数据,例如其中一本书的描述。我不知道我是否清楚
    【解决方案2】:

    首先,如果您尝试提交您应该使用 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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 2021-01-05
      • 2012-06-17
      • 1970-01-01
      相关资源
      最近更新 更多