2017-02-15 121 views
1
創建一個數據改變形式

我試圖創建一個表單給用戶改變它在我的web應用程序自己的私人數據(地址,年齡...):如何在春季

  • 視圖:

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

    在表單頁面加載我所有的用戶數據表單視圖,然後發送加載視圖Thymeleaf並創建最終的HTML的@GetMapping,這一切proccess工作正常。

  • 我的問題是:

出於顯而易見的原因,形式不具有的一個字段userId變量,我並不想創建一個隱藏字段的ID,以避免惡意用戶那可以很容易地改變userId字段。

  • 我的問題是:

如何保持在服務器端相同UserDetailsView實例來保持userId變量的內容,只是改變形式相關領域的變量?實際上,我的解決方案是在數據庫中搜索記錄的用戶以獲取它的ID,然後更新UserDetails表。

回答

0

如果用戶只能更改與自己相關的數據,只需在會話中保留userId(以及可能在應用程序中需要的其他用戶詳細信息)即可。

+0

但對於其他類型的數據,而不是用戶信息登錄的用戶的例子嗎?例如:用戶想要改變來自「1-n」關係的一個寄存器的數據,就像其中一本書的描述一樣。我不知道我是否清楚 –

0

首先,如果你想提交你應該使用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?