2017-04-22 20 views
1

使用Spring Security和Web MVC保存屬於經過身份驗證的用戶的對象時,遵循的最佳模式是什麼?Spring Security和Web MVC:如何保存屬於用戶的數據?

我所遇到的所有教程都展示瞭如何驗證登錄用戶,而且就他們而言,他們沒有解釋如何使用多個用戶及其數據。例如:登錄的用戶正在保存新的博客文章。這裏是控制器的樣子:

@PostMapping("/blog/save") 
public String blogSavePost(@AuthenticationPrincipal CurrentUser currentUser, BlogForm blogForm) { 
    blogService.save(currentUser, blogForm); 
    return "redirect:/blog";  
} 

如若currentUser傳遞給blogService其中服務然後設置它的實體Blog(然後傳遞給BlogRepository保存)?這似乎有點繁瑣,必須通過此保存或編輯..

什麼時候編輯一個對象 - 因爲被保存的對象的ID傳遞給控制器​​(作爲參數的一部分表單對象),它可以被用戶修改。服務層應該如何驗證要保存的數據是否屬於用戶?我估計,有使用Spring Security來處理這一個簡單的方法,我只是還沒有碰到過的是什麼完全到來..

回答

0

問題1

給你。我只想設置在控制器聯想將它傳遞給服務之前:

問題2:

您可以防止某些領域的結合由youir控制器,其界定的粘合劑:

@InitBinder 
public void initBinder(WebDataBinder binder) { 
    binder.setDisallowedFields("userId"); 
} 

您也可以使用方法級別的安全性來防止用戶編輯屬於他們的實體以外的實體。在這裏看到的例子:

Spring Security in conjuction with Spring repositories to secure and authenticate various parts of a website

或者,您也可以使用Web安全表達式,將確保端點的保存/更新/刪除請求。

http://docs.spring.io/spring-security/site/docs/current/reference/html/el-access.html#el-access-web

相關問題